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]
?