Comment detail

コマンドライン引数の取得 (Nested Flatten)
Perl の場合@ARGVに入っています。
$ARGV,ARGV もあって、全然違うので注意が必要です。
shift は、引数指名しない場合(メインでは)@ARGVが指定されたとみなされます。
1
print shift  while(@ARGV);

ちなみにARGVは、@ARGVをすべてファイル名と見なしてオープンした際のファイルハンドル。<><ARGV>を略記したものです。

$ARGVは、ARGVをイテレートしている際の実際のファイル名。$.で現在の行数も取れます。

以下、サンプルプログラムはこの点をデモります。

詳しくは

perldoc perlvar

で。

Dan the Perl Monger

1
2
3
4
5
6
7
8
9
#!/usr/local/bin/perl
use strict;
use warnings;

while(my $line = <ARGV>){
    printf "%12s%4d:%s", $ARGV, $., $line;
}
# 以下のようにして一行にできちゃう!
perl -ple '$_=sprintf "%12s%4d:%s", $ARGV, $., $_' argv.pl
既出よりもう少し丁寧なの
1
2
3
foreach my $arg (@ARGV){
    print "$arg\n";
}
既出よりもう少し丁寧なの
(間違えてOtherに挙げてしまいました、あちらは削除して下さい)
1
2
3
foreach my $arg (@ARGV){
    print "$arg\n";
}

Index

Feed

Other

Link

Pathtraq

loading...