challenge コマンドライン引数の取得

以下にけだし同感なので。

inferno :: どう書く?orgは多言語クックブックになれるか > 一般投稿が可になった時に、ちょっと感じてたんですがやっぱり最近ある傾向が顕著で。というのは数学パズル系とか、(数学的な、事務処理などではない)アルゴリズム勝負!なお題ばっかりなんですよね。

というわけで、たまには簡単でその場で答えが出て、なによりある言語使いにとって「外国語」ではこういうんだというのがわかる問題として考えてみました。

% program a b c d

で a, b, c, d を得るにはどうしたらよいかという、それこそネイティブには刺身タンポポより簡単だけど、「外国人」にはとっさに浮かばないという問題です。

Dan the Practical Programmer

Posted feedbacks - Perl

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

既出よりもう少し丁寧なの
(間違えてOtherに挙げてしまいました、あちらは削除して下さい)
1
2
3
foreach my $arg (@ARGV){
    print "$arg\n";
}

Index

Feed

Other

Link

Pathtraq

loading...