Hier _ist_ $_[0] das erste Element von @_ (dessen Inhalt nur aus einem Element besteht, nämlich $a), weswegen durch die neue Zuweisung dieses Element einen neuen Wert erhält und
print $a;
nun "Bye" ausgibt.
Oder sehe ich das falsch (4 Monate nicht geperlt...)?
Ja, siehst su.
Wenn das ein normales Verhalten wäre dann ginge:
my $x = 'hallo';
my @array = ($x);
$arry[0] = 'bye';
print $x; # -> hallo nicht bye
Struppi.