如何在Perl中按逗号将字符串拆分为散列?
我有以下代码:
my @logs = split(",",$opts->{"logs"});
$opt_href->{"logs"} = @logs;
它基本上$opts->{"logs"}用逗号分割并保留数组引用。稍后我需要检查$opt_href->{"logs"}数组中是否存在字符串 。查看这个主题,我看到建议保留散列,而不是数组。我只能这样做:
my %logs;
for each my $log (split(",",$opts->{"logs"})) {
$logs{$log} = 1;
}
$opt_href->{"logs"} = %logs;
有一个更好的方法吗?也许一个/两个班轮?
回答
my %logs = map { $_ => 1 } split /,/, $opts->{logs};
$opt_href->{logs} = %logs;
或者,使用匿名哈希引用,由 { }
$opt_href->{logs} = { map { $_ => 1 } split /,/, $opts->{logs} };