Я использую Getopt::Std
для обработки аргументов командной строки. Мои аргументы командной строки - это строки. У меня проблема with
getopts () `, так как она работает только для односимвольных опций.
Как видно ниже, параметры« targetdir »являются обязательными, и скрипт должен выйти из строя, если какой-либо из них отсутствует. "block" НЕ является обязательной опцией.
Я не вижу, что %options
был установлен с помощью приведенного ниже кода, и все мои параметры {key} равны NULL. Если бы я заменил «srcdir => s» и «targetdir => t», то следующий фрагмент кода работает. Это не работает с параметрами "-srcdir" "-targetdir". Как лучше всего решить мою проблему?
Режим использования:
perl test.pl -srcdir foo1 -targetdir hello1
#!/usr/bin/perl -w
use strict;
use Getopt::Std;
# declare the perl command line flags/opt we want to allow
my %options=();
my $optstring = 'srcdir:targetdir:block';
getopts( "$optstring", %options);
# test for the existence of the opt on the command line.
print "-srcdir $options{srcdir}\n" if defined $options{srcdir};
print "-targetdir $options{targetdir}\n" if defined $options{targetdir};
print "-blocks $options{block}\n" if defined $options{block};
# other things found on the command line
print "loop:\n" if ($#ARGV > 0);
foreach (@ARGV)
{
print "$_\n";
}