pl: Perl: Subroutinen aufrufen mit & oder ohne &

Beitrag lesen

Ergänzung: Das & war mal dazu gedacht, eigene Funktionen von builtin-Funktionen zu unterscheiden, z.B. so:

printf("%s\n%s\n", time, &time);
sub time{ "Kukuk" }

Ausgabe:
1491854024
Kukuk

Mit der Qualifizierung der Package (Namespace) wird der Code unter Anwendung des Pfeil-Operators jedoch besser lesbar:

package Foo;
printf("%s\n%s\n", time, Foo->time);
sub time{ "Kukuk" }

Beachte, dass mit dem Pfeiloperator eine Übergabe erfolgt, in obenstehendem Beispiel wird der Name der Package als erstes Argument übergeben. Allgemein gesagt: Methoden sind Klassenmethoden, wenn sie mit dem Namen einer Klasse (Perl-Package) aufgerufen werden. Der Konstruktor ist ein typisches Beispiel für eine Klassenmethode, er liefert eine Instanz der Klasse. Methoden die über die Instanz aufgerufen werden, sind i.d.R. Objektmethoden. MfG