sub

17/05/2008 - 07:49 von Alexander Kainz | Report spam
hallo

ich hab da ein sub gesehen (nicht von mir geschrieben), welches mit

sub kfm_runden($;$) { ... }

beginnt.

welche bedeutung haben die $;$?

greets
alex
-/--\-
 

Lesen sie die antworten

#1 Mirko Westermeier
17/05/2008 - 08:50 | Warnen spam
Hallo welt,

Alexander Kainz schrieb:

sub kfm_runden($;$) { ... }


[...]
welche bedeutung haben die $;$?



Das ist ein Prototyp. Siehe perldoc perlsub:
<http://perldoc.perl.org/perlsub.htm...otypes>

Der Prototyp $;$ erwartet einen und einen optionalen Skalar. Wenn ich
alles richtig in Erinnerung habe, heißt das, dass Du einen Fehler an den
Kopf geworfen bekommst sobald die Funktion mit 0 oder mehr als zwei
Argumentent aufgerufen wird. Zusàtzlich wird ein skalarer Kontext für
die Argumente erzeugt:

$ perl -le 'sub foo ($;$) { print "@_"; }; foo()'
Not enough arguments for main::foo at -e line 1, at end of line
Execution of -e aborted due to compilation errors.

$ perl -le 'sub foo ($;$) { print "@_"; }; foo( @{[ 17, 42 ]} )'
2

Im zweiten Beispiel wird also das Array skalar ausgewertet, deshalb
bekommst Du die Anzahl der Eintràge und nicht die zwei Eintràge selbst.

HTH
Mirko

Ähnliche fragen