Christian Kruse: 2 Fragen (Subroutine, kürzere Schreibweise)

Beitrag lesen

Moin!

Frage 2 :
Wenn ich Werte einer Subroutine übergebe zB :
&test($wert1,$wert2);

Bitte(!) nicht &test() schreiben -- test() reicht voellig aus.
Das & ist ein Ueberbleibsel aus Perl4 und hat unter Umstaenden
einige negative Auswirkungen. Fuer mehr Infos, schau dir perldoc
perlsub an.

Kleine Ergaenzung.
Ueberbleibsel ist nicht ganz richtig.

Nun -- es *ist* ein Ueberbleibsel.

Das '&' hat schon seinen Sinn, wenn man in einer Subroutine eine
andere ohne Argument aufruft wird durch das '&' davor  der
aktuelle Array '@_' uebergeben.

Richtig. Das waren die unangenehmen Nebenwirkungen, von denen ich
sprach.

Aber Du hast recht - wenn man sowas nicht macht, sollte man es
sicherheitshalber und korrekterweise weglassen.

Ich wuerde ehrlich gesagt sagen, im Sinne eines sauberen
Programmierstils sollte man statt

sub blub {
  &blah;
}

lieber

sub blub {
  blah(@_);
}

schreiben. Das mag zwar etwas weniger performant sein (es muss erst
eine Kopie der Liste angelegt werden, IMHO), aber wenigstens weiss
man auf den ersten Blick, was gemeint ist.

Gruesse,
 CK