【Perl】コマンドライン引数を、強力かつ簡単に扱う方法

プログラミング

つぎの方法を使うと、引数の順番も関係なく、様々な文字列の引数を扱うことができます。

#!/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)が適切に処理されました。

コメント

タイトルとURLをコピーしました