つぎの方法を使うと、引数の順番も関係なく、様々な文字列の引数を扱うことができます。
#!/usr/bin/perl
# sample.pl
map {
if (/^-a$/) {
print $_, "\n";
}
elsif (/^--(xyz)$/) {
print uc($1), "!!\n";
}
else {
print "[", $_, "] is ignored.\n"
}
} @ARGV;
@ARGVはPerl特有の配列で、コマンドライン引数が自動的に格納されます。
mapは、配列(リスト)の各要素を処理できる関数です。
if文の条件句で正規表現が使えるため、きめ細やかなパターンマッチが可能です。
# Linux上での実行例
$ chmod +x sample.pl
$ ./sample.pl test --xyz -a -b 100
[test] is ignored.
XYZ!!
-a
[-b] is ignored.
[100] is ignored.
引っかけたい引数(-a, –xyz)が適切に処理されました。
コメント