Leser: 26
QuoteWird ein if (foo()) {} ausgeführt?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ perl -wle'
sub foo {
return;
}
sub bar {
return undef;
}
sub baz {
return 1;
}
print "foo" if foo();
print "bar" if bar();
print "baz" if baz();'
baz
$
2009-03-16T22:33:07 pqaber return ohne parameter ist meist eh die beste wahl, denn das verhält sich dann im list-context auch richtig.
2009-03-17T14:43:06 betterworldZum Titel dieses Threads sollte man noch sagen, dass "defined" nicht dasselbe wie "wahr" ist. [...]
2009-03-17T15:45:04 murphy2009-03-17T14:43:06 betterworldZum Titel dieses Threads sollte man noch sagen, dass "defined" nicht dasselbe wie "wahr" ist. [...]
Man sollte auch noch anmerken, dass ein return; oder return (); in einer Subroutine keinen der von Betterworld angeführten Werte zurückgibt.
QuoteInteressanterweise unterscheidet sich das Zurückgeben einer wörtlichen leeren Liste auch vom Zurückgeben einer leeren Liste, die aus einem leeren Array entstanden ist. In letzterem Falle wird die Abwesenheit von Rückgabewerten in skalarem Kontext nämlich als Null interpretiert.
2009-03-23T13:54:17 sid burnUnd wenn man mal "0" zurück geben möchte und dieses als "wahrer" Wert gelten soll kann man noch zwei spezielle Strings zurück geben.
"0E0" und "0 but true". Mit diesen Strings kann man dann als Zahl rechnen ohne das diese ein warning ausgeben und sie werden als "0" anerkannt.