コマンドライン引数の取得
Posted feedbacks - Perl
Perl の場合@ARGVに入っています。 $ARGV,ARGV もあって、全然違うので注意が必要です。 shift は、引数指名しない場合(メインでは)@ARGVが指定されたとみなされます。
1 | print shift while(@ARGV);
|
ちなみにARGVは、@ARGVをすべてファイル名と見なしてオープンした際のファイルハンドル。<>は<ARGV>を略記したものです。
$ARGVは、ARGVをイテレートしている際の実際のファイル名。$.で現在の行数も取れます。
以下、サンプルプログラムはこの点をデモります。
詳しくは
で。
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
|
既出よりもう少し丁寧なの (間違えてOtherに挙げてしまいました、あちらは削除して下さい)
1 2 3 | foreach my $arg (@ARGV){
print "$arg\n";
}
|




dankogai
#4868()
Rating12/18=0.67
以下にけだし同感なので。
inferno :: どう書く?orgは多言語クックブックになれるか > 一般投稿が可になった時に、ちょっと感じてたんですがやっぱり最近ある傾向が顕著で。というのは数学パズル系とか、(数学的な、事務処理などではない)アルゴリズム勝負!なお題ばっかりなんですよね。
というわけで、たまには簡単でその場で答えが出て、なによりある言語使いにとって「外国語」ではこういうんだというのがわかる問題として考えてみました。
% program a b c dで a, b, c, d を得るにはどうしたらよいかという、それこそネイティブには刺身タンポポより簡単だけど、「外国人」にはとっさに浮かばないという問題です。
Dan the Practical Programmer
[ reply ]