perl - Getopt::Long 在散列选项中推送多个值

标签 perl

例如:

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/

相关文章:

perl - 如何使用perl找到给定日期的下一个日期?

apache - mod_perl 死了吗?

perl - 在 Perl 中发出并发 Web 请求的最快方法是什么?

perl - 获取perl中最顶层路径元素的有效方法

perl - 如何在 Perl 的模板工具包中仅呈现特定的 `BLOCK`?

windows - Perl:当 child 被杀死时,子进程不会被杀死

perl - "N"使用cgi的参数数量

mysql - 连接到远程服务器时无法在 perl 中执行 mysql 查询

perl - 如何使用 perltidy 格式化 qw 列表?

string - 通过 Perl 从 xls 读取日期到 csv