Thread @ARGV und while(<>)
(7 answers)
Opened by toby at 2006-05-20 12:27
@toby: Wie wäre es einfach mit einem
Code: (dl
)
my @Arguments = @ARGV; @steffenw: Nein, <> ist eben nicht das Gleiche wie <STDIN>. Nur, wenn das Skript keine Argumente übergeben bekommt, ist es gleich. Siehe auch perlop: [quote=perlop,I/O Operators] is equivalent to the following Perl-like pseudo code: Code: (dl
)
1 unshift(@ARGV, '-') unless @ARGV; [/quote] Wenn man aus <> liest, werden also alle Argumente als Dateinamen interpretiert, aus denen nacheinander gelesen wird. Der leere Diamantoperator ist sehr praktisch, um Programme zu schreiben, die wie übliche Filter unter UNIX/Linux funktionieren. Die folgenden Zeilen machen dann (fast) dasselbe: (Der Unterschied liegt darin, dass ich im ersten Fall in programm an die einzelnen Dateinamen kommen kann, im zweiten Fall nicht.) |