[quote=betterworld,24.09.2003, 21:39]Ich finde das aber etwas komisch insofern, als dass da im Prototyp &@ steht, obwohl doch ueberhaupt kein Array als zweites Argument uebergeben wird.[/quote]
Das @-Zeichen in der Prototypen-Definition steht auch nicht fuer ein Array sondern fuer eine Liste.
Eine Subroutine mit Codereferenz- und Array-Prototyp wuerde so aussehen:
Hier mal ein Versuch einer Definition
Erstes Argument == Rueckgabewert, d.h. die anonyme Subroutine die
catch beim Aufruf erhaelt
{ /phooey/ and print "unphooey\n"; }
wird auch gleich wieder von catch zurueck gegeben.
sub try (&@) {
my($try,$catch) = @_;
eval { &$try };
if ($@) {
local $_ = $@;
&$catch;
}
}
try nimmt auch als erstes Argument eine anonyme Subroutine entgegen gefolgt von einer Liste.
Die anonymous Sub ist:
Die Liste die
try entgegen nimmt enthaelt nur den Rueckgabewert von
catch (Codereferenz bzw. anonymous Subroutine).
,,Das perlt aber heute wieder...'' -- Dittsche