我有一个 Perl 中的哈希值,它已从一些遗留代码转储到其中,键名现在已从简单的 reqHdrs 更改为 reqHdrs.bla
$rec->{reqHdrs.bla}
我的问题是现在我似乎无法从哈希访问该字段有什么想法吗?
以下是我的错误
Download Script Output: Bareword "reqHdrs" not allowed while "strict subs" in use
如中所述perldoc perldata http://perldoc.perl.org/perldata.html:
...此类花括号中的标识符被强制为字符串,就像散列下标中的任何简单标识符一样。都不需要引用。我们的
前面的例子,$days{'Feb'}
可以写成$days{Feb}
并且将自动采用引号。但下标中任何更复杂的东西
将被解释为一个表达式。这意味着例如$version{2.0}++
相当于$version{2}++
,不至于$version{'2.0'}++
.
一般来说,如果你有一个哈希键,其字符位于[A-Za-z0-9_]
范围,在大括号内使用引号(单引号或双引号)。与普通字符串一样,双引号中的内容将被解析以查找任何包含的变量,而单引号字符串则按字面意思处理:
use strict; use warnings;
use Data::Dumper;
my $x = 1;
my %hash = (
bare_string => 'hi there',
"not a bare string" => 'yup',
);
$hash{'$x'} = 'foo';
$hash{"$x"} = 'bar';
print Dumper(\%hash);
prints:
$VAR1 = {
'bare_string' => 'hi there',
'not a bare string' => 'yup',
'$x' => 'foo'
'1' => 'bar',
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)