Hallo,
hmmm du hast Recht :). Irgendwie funktioniert das.
Das funktioniert nicht nur 'irgendwie', sondern genau so, wie es soll.
Dein Problem war eigentlich nur, daß Du in der Funktion zufälligerweise den gleichen Namen für eine funktionslokale Variable benutzt hast, den Du auch für die, diesmal globale[1] Variable verwendet hast. Die Betonung liegt dabei auf 'zufällig'.
BTW: ich hätte das übrigens anders, ohne Referenz gelöst:
$text = aendern($text);
sub aendern {
my $text = shift;
$text =~ s/"/"/g;
return $text;
}
Der Vorteil ist, daß Du bei dieser Lösung auch
$wasauchimmer = aendern($irgendwasanderes);
schreiben kannst, wenn Du den Inhalt von $irgendwasanderes später eventuelle nochmals brauchst.
Der Nachteil ist allerdings, daß mehr Daten hin und her übergeben werden könnten. Ob das auch wirklich so ist, weiß ich nicht, da ich mich noch nicht soweit mit den Internas von Perl auseinander gesetzt habe. Aber ich denke doch, daß die gesamten Daten übergeben werden und nicht nur eine Verwaltunsgstruktur.
So ist es nur ein Beispiel mehr, daß es mehrer Wege zum Ziel gibt. Und daß meist jeder dieser Wege ein Für und Wider hat.
Grüße
Klaus
[1] wobei diese, durch die Referenz übergebene, Variable auch durchaus in einer anderen Funktion lokal sein kann, aber davon weiß die aufgerufene Funktion nichts.