Thread Perl Modul Datei: Umwandlung subroutine in ein modul (7 answers)
Opened by Gast at 2006-08-09 16:44

sid burn
 2006-08-10 02:07
#68802 #68802
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=MartinR,09.Aug..2006, 22:45]Kann mir bitte jemand die Funktion der zwei bzw. drei Dollarzeichen erklären in sub show($$) bzw. sub show($$$)?

Danke[/quote]
Das sind sogenannte Prototypes. Zum einen kannst du damit verhindern das deine Argumentenliste abgeflacht werden. Zum anderen kannst du damit erzwingen was deiner Funktion übergeben werden muss.

show($$)

muss also immer 2 Arguemente übergeben werden, wenn du weniger oder mehr als 2 Argumente übergibst, gibt es beim Kompilieren des Skriptes schon eine Fehlermeldung.

"show(1)" würde als Aufruf in deinem Skript z.B. nicht klappen.


Ansonsten kannst du damit z.B. verhindern das die Argumentenliste abgeflacht wird und alles in "@_" landet. Jedenfalls wird das nur gemacht sofern du deine Subroutine nicht mit einem & aufrufst. Also &show(...).

Wenn du z.B. folgendes Schreibst:

mypush(\@@)

dann Arbeitet die Subroutine genauso wie das eingebaute "push". Du kannst also "mypush(@array1, @array2, $wert)" schreiben. Allerdings landen die Werte der Arrays nicht alle in @_. Sondern von @array1 wird eine Referenz erzeugt und diese dann @_ hinzugefügt. Der Rest ist dann normal und die Inhalte von @array2 und $wert würde in @_ landen.

http://perldoc.perl.org/perlsub.html\n\n

<!--EDIT|sid burn|1155161379-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Perl Modul Datei: Umwandlung subroutine in ein modul