Thread methoden mit und ohne &? (7 answers)
Opened by susi at 2006-06-21 17:02

Dubu
 2006-06-21 20:02
#67516 #67516
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
* Wie renee schon sagte: Mit &, ohne Klammern, wird automatisch das aktuelle gültige Parameterarray @_ wieder als Parameter übergeben. Selten, dass man das absichtlich macht.

* docsnyders Beispiel ist evil, weil es symbolische Referenzen benutzt und unter "use strict" kracht.
Aber in einem stimmt's: Wenn Name oder Referenz einer Subroutine gebraucht wird, muss das "&" davor stehen.
(Bsp.: $mysubref = \&mysub;).

* Mit "&" werden Prototypen ignoriert. Wenn man Prototypen nutzt, darf man also kein "&" vor den Aufruf setzen.

* Mit "funktionsname()" ist man immer auf der sicheren Seite, ob mit oder ohne Prototypen.

* Historisch gab es zuerst nur die Form mit "&". Weil es so gut zu den anderen Sigils passt ("$" für Skalare, "@" für Arrays etc.) und selbstdefinierte Funktionen von den eingebauten Perl-Funktionen unterscheidet, benutzen viele immer noch die Form mit dem "&" davor. (Gell, strat? ;))

View full thread methoden mit und ohne &?