manni: $_[0] problem

Beitrag lesen

Hi!

kurz und knapp: Ich mache eine eingabe sie kommt in eine subroutine wird umgewandelt und wieder ausgegeben.

Zur verständlichkeit:
#!/usr/bin/perl
$a = <STDIN>;  #Eingabe ist "Hallo"
chomp $a;
print $a;   #logischerweise immernoch "Hallo"
umwandeln($a)   #Hier wird $a in die sub gegeben
sub umwandeln
{
  my $wandel = shift;
  $wandel = "Bye";
}
print $a;    # $a sollte jetzt "Bye" sein.

Warum klappt das nicht? Wenn ich die sub aber so mache:

sub umwandeln
{
  $_[0] = "Bye"
}

Geht es.

Ich bin wirklich kein freund von variablen namens $_ und würde echt gerne wissen warum das nicht geht?
my $wandel = shift;
ist doch das ganz selbe wie
$_[0] oder versteh ich da etwas falsch?

Kann es sein das es nicht geht weil ich nur ein parameter übergebe ich aber eine liste damit aufrufe?
Bitte um hilfe.