异常Perl语法
发布时间:2020-12-15 21:30:27 所属栏目:大数据 来源:网络整理
导读:我必须对Perl脚本进行修改,这是我第一次理解Perl的尝试.我看到以下内容: my %trades;...foreach my $row (@$rows) { @{$trades{pop @$row}} = @$row;} 我感到困惑,因为看起来我们弹出数组@ $row中的最后一个项目,并将%trades的哈希键设置为弹出的项目,并将
我必须对Perl脚本进行修改,这是我第一次理解Perl的尝试.我看到以下内容:
my %trades; ... foreach my $row (@$rows) { @{$trades{pop @$row}} = @$row; } 我感到困惑,因为看起来我们弹出数组@ $row中的最后一个项目,并将%trades的哈希键设置为弹出的项目,并将该值设置为@ $row. 这个理解正确吗? 解决方法
要了解这段代码,我们需要清楚三件事情:
>评估顺序: EXPR_A = EXPR_B 在评估EXPR_A之前评估EXPR_B. @new_array = @old_array 将@old_array的值复制到@new_array. @{ $trades{$key} } 在%trades哈希中访问名为$key的条目,并将其视为数组引用. 一起,您的代码相当于此: foreach my $row (@$rows) { my @copy = @$row; my $key = pop @$row; @{ $trades{$key} } = @copy; } (同时保留所有副作用我可以看到) 所以例如 $rows = [ [1,2,"keyA"],[3,4,"keyB"],]; 会创造 %trades = ( keyA => [1,keyB => [3,); $rows = [ [1,2],4],]; 谁写的这一行对评估顺序有非常精确的知识,并喜欢酷刑维护程序员. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |