GetOptions
оставит все аргументы, которые он не проанализировал, в переменной @ARGV
. Таким образом, вы можете просто перебрать переменную @ARGV
.
use Getopt::Long;
my %opt;
GetOptions(
\%opt,
'mode=s'
);
for my $filename (@ARGV){
parse( $filename, \%opt );
}
Существует еще один вариант, вы можете использовать специальный параметр обратного вызова <>
аргумента.
use Getopt::Long qw'permute';
our %opt;
GetOptions(
\%opt,
'mode=s',
'<>' => sub{
my($filename) = @_;
parse( $filename, \%opt );
}
);
Это полезно, если вы хотите работать с несколькими файлами, но для некоторых из них используйте разные опции.
perl test.pl -mode s file1 file2 -mode t file3
В этом примере для $opt{mode}
будет установлено значение s
, затем будет вызван parse
с аргументом file1
. Затем он вызовет parse
с file2
в качестве аргумента. Затем он изменит $opt{mode}
на t
и вызовет parse
с file3
в качестве аргумента.