Perlには一度に1つのオプションしかありません。

Perlには一度に1つのオプションしかありません。

2つのオプションを同時に配置できないという要件があります。

たとえば、-aオプションを使用すると、次のようになります。

file.pl -a file.text        # executes file

しかし、私が書くなら

file.pl -a -a file.text     # it is supposed to print a msg

または

file.pl -a -b file.text     # it is supposed to print a msg

以下は私のスクリプトです。

if ($ARGV[1] eq "-a" or "-b" or "-c" ) {

print "error \n"; }

問題は、単に書いてもfile.pl -a file.textメッセージが印刷されることです。

ベストアンサー1

これは論理演算子が動作する方法ではありません。完全な式を繰り返す必要があります。

if ($ARGV[1] eq '-a' or $ARGV[1] eq '-b' or $ARGV[1] eq '-c') {
    print "Error\n";
}

ARGV部分を繰り返さない場合は、次のようにしますgrep

if (grep $_ eq $ARGV[1], qw(-a -b -c)) {

ただし、実際には2番目のパラメータの最初の文字に興味があるため、この方法も機能します。

if (0 == index $ARGV[1], '-') {

何について$ARGV[2]

おすすめ記事