Thread Kann ich das? (13 answers)
Opened by RPerl at 2008-01-03 19:38

sid burn
 2008-01-07 19:50
#104468 #104468
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Es hat noch einen anderen Grund. Wenn du die Subroutine mit einen Ampersand aufrufst, dann wird automatisch @_ als Argumentenliste übergeben. Wenn du zwar ein () anhängst dann übergibst du zwar wieder explizit eine Leere liste, aber wenn du es vergisst übergibst du halt @_.

Wenn du innerhalb einer Subroutine bist und @_ z.B. nicht leerst. (weil du z.B: so wie ich immer my ($var1, $var2, ... ) = @_) nutzt. Dann kann das zu einem Fehlverhalten führen.

Einen Fehlverhalten was möglicherweise gar nicht mal so schnell ersichtlich ist. Daher lieber gleich ganz weg lassen und immer nur Klammern am ende nutzen.

Code: (dl )
1
2
3
4
5
6
7
8
@_ = qw/ hallo welt /;

&foo;
foo();

sub foo {
print @_, "\n";
}
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Kann ich das?