@ops数组包含以下内容
status: 0
duration: done
name: NA:/ny/wdc
system: legacy
type: new
我正在尝试使用下面的
制作哈希foreach my @op (@ops) {
my ($k, $v) = $op =~ /^(.*): (.*)$/;
$r{$k} = $v;
}
但它没有用,请建议
答案 0 :(得分:1)
您尚未说明它无法以何种方式运作,但foreach my @op (@ops)
应为foreach my $op (@ops)
。你一次从数组中取一个东西,一个项目是标量($
),而不是数组(@
)。
答案 1 :(得分:1)
foreach循环中的循环变量必须是单个标量。将@op
更改为$op
:
foreach my $op (@ops) {
您还可以将代码简化为my %r = map /^([^:]+): (.*)/, @ops
,因为列表上下文中的正则表达式匹配会返回捕获列表。