例如:
use Getopt::Long;
%file ;
GetOptions('file=s%' =>
sub { push(@{$file{$_[1]}}, $_[2]) });
use Data::Dumper ;
print Dumper %file ;
print @{$file{filename}} ;
my @file_array = @{$file_ref};
print "==\n @file_array == ";
我可以执行并且它工作:
perl multipls.pl --file filename=a.txt --file filename=b.txt filename=c.txt
我在找
perl multipls.pl --file filename=a.txt filename=b.txt filename=c.txt
如何实现?
最佳答案
我不知道如何说服 Getopt::Long
完全按照你的要求去做,但我经常使用 shell 引号将几个项目组合成一个字符串,然后将字符串拆分成一个数组:
use strict;
use warnings;
use Data::Dumper;
use Getopt::Long;
my @files;
my $filelist;
GetOptions('file=s' => \$filelist);
if ($filelist) {
$filelist =~ s/^\s+//; # Remove any leading whitespace
@files = split /\s+/, $filelist;
}
print Dumper(\@files);
__END__
perl multipls.pl --file "filename=a.txt filename=b.txt"
$VAR1 = [
'filename=a.txt',
'filename=b.txt'
];
关于perl - Getopt::Long 在散列选项中推送多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3968547/