sub summs_by_key {
foreach my $R (@CURR_RECS) {
if ($combine) {
print __LINE__ . ") ... $R" ;
$R =~ s/\^/\|/ for 1 .. $KEY_POS ; # the regex expression
print __LINE__ . ") ___ $R" ;
}
#... etc
}
#... etc // no other reassingments of $R
}
Run Code Online (Sandbox Code Playgroud)
注意: @CURR_RECS 是一个声明为的全局数组,our @CURR_RECS ;
它在单独的子/函数中填充。正则表达式的更改实际上可以更改数组值。该函数被调用多次,在后续调用中,我们注意到正则表达式的更改已作用于数组的元素。
我的问题是这是正常行为还是 Perl 错误 - 它仅在正则表达式行执行 2 次而不是一次时发生(即 $KEY_POS = 2)
我通过不直接使用迭代器而是使用它的“副本”来解决这个问题。我将迭代器重命名为 $Rs 并将其分配给 $R。
foreach my $Rs (@CURR_RECS) {
my $R = $Rs …Run Code Online (Sandbox Code Playgroud) 我将保持我的问题的高度,因为这就是我,这就是我的风格,这就是我需要回答的问题。
我有一个多级哈希可以使用(哈希的哈希)。我还有一些算法可以为我提供 @key 中的一系列键(用于查找各种值)。
我获取个人价值观的技巧是:
只需构建一个如下所示的表达式
$h-> {$key[0] }=> {$key[1]} => ... e.t.c.
Run Code Online (Sandbox Code Playgroud)
然后“评估”该表达式。
是否有更好的技术来处理可变按键序列而不需要 eval?
(哈希是目录结构的镜像。值是单个文件,我的程序需要读取这些文件的内容。)
我尝试过,它适用于 eval 选项。