Thread wantarray und return undef
(20 answers)
Opened by rosti at 2012-02-10 13:15
Ok, für Alle zum Spielen ;)
Var 1: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 my @y = foo( foo => 1, bar => 2, baz => 3) or die $@; print "Hallo, ich lebe noch!\n"; sub foo{ my %in = @_; # erstelle eine hashref UND eine liste my $ref = {}; my @li = (); eval{ # zum Testen eine exception die "Something is wrong!\n"; $ref = \%in; @li = values %in; }; return undef if $@; return wantarray ? @li : $ref; } Gibt aus: Hallo, ich lebe noch! Var 2 Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 my @y = foo( foo => 1, bar => 2, baz => 3) or die $@; print "Hallo, ich lebe noch!\n"; sub foo{ my %in = @_; # erstelle eine hashref UND eine liste my $ref = {}; my @li = (); eval{ # zum Testen eine exception die "Something is wrong!\n"; $ref = \%in; @li = values %in; }; return if $@; return wantarray ? @li : $ref; } Gibt das aus, was in $@ steht. Die Lösung heißt Variante 2, d.h., nicht return undef sondern einfach nur return für den Fall, dass in $@ was drinsteht. Ansonsten lebt das Script weiter und der Fehler bleibt unbemerkt. |