Perlの勉強過程でのメモです。ウソ書いてる可能性あり(汗
(2002/02/10)
Perlではコマンドライン引数は組み込み変数@ARGVに渡されます。
C言語のように第一引数が実行ファイル名ではありません。
> perl test.pl aaa bbb
$ARGV[0] = "aaa"
$ARGV[1] = "bbb"
コマンドライン引数列挙のコードは、
for ($i = 0; $ARGV[$i]; $i++)
{
print "$ARGV[$i]\n";
}
どうもC言語っぽいコード、foreach風の?書き方のほうがスマートですね。
'foreach 変数(リスト)'でリストから変数に値を格納しループ実行してくれるようです。
さらに変数を省略すれば自動的にデフォルト変数'$_'が使われます。
foreach (@ARGV)
{
print "$_\n";
}
便利ですね:-)
(2002/02/12)
さて、上記のコマンドラインの列挙を利用してワイルドカード展開も出来るでしょうか?
プロンプトから実行してみますが、
> perl test.pl *.*
|*.*
そのまま文字"*.*"が出力されてしまいました。だめですね。
Perlでワイルドカード展開をしてもらう場合、組み込み変数@ARGVを<>で囲みます。
foreach (<@ARGV>)
{
print "$_\n";
}
プロンプトから実行してみると、
> perl test.pl *.*
|test.pl
うまくいきました。