Return-Wert von Subroutinen
Xaxi
- perl
Hallo,
kann mir jemand erklären, warum im 3. Beispiel nicht auch der Wert 5 als Ergebnis herauskommt? Ich hab doch nur die Routine up3 direkt
angegeben.
sub up1{
return 5
}
$erg1 = up1();
print "$erg1 = $erg1\n"; # ===> $erg1 = 5
sub up2{
sub up3 {return 5};
return up3()
}
$erg2 = up2();
print "$erg2 = $erg2\n"; # ===> $erg2 = 5
sub up4{
return sub {
return 5
}
}
$erg4 = up4();
print "$erg4 = $erg4"; # ===> $erg4 = CODE(0x18329b4)
Hallo Xaxi,
in deinem 3. Beispiel gibst Du eine Referenz auf die anonyme Unterroutine "sub { return 5 }" zurück.
Um diese anonyme Unterroutine zu dereferenzieren müsste der Befehl print "$erg4 = &$erg4" lauten. Allerdings ohne Gewähr und auch nicht getestet!
Herzliche Grüße aus Weinsberg
Helmut Weber
Hallo Helmut,
Um diese anonyme Unterroutine zu dereferenzieren müsste der Befehl print "$erg4 = &$erg4" lauten. Allerdings ohne Gewähr und auch nicht getestet!
Das wird so nicht funktionieren, in diesem Falle muss man den Konkatenationsoperator verwenden:
print "\$erg4 = ".&$erg4;
bzw.
print '$erg4 = '.&$erg4;
.
Einen Hinweis hätte übrigens schon die Syntax-Highlighting-Funktion dieses Forums geliefert:
print "\$erg4 = &$erg4;
.
Schöne Grüße,
Johannes