我很难理解这个小代码片段
我的 $ref =\@{$seq->{$label}{$ARGV[4]}};
我可以得到一些帮助来破译这个吗?
最佳答案
让我们像这样重写它
my $ref = \@{
$seq->{ $label }{ $ARGV[4] }
}
外部 my $ref =
是一个赋值。我想这很清楚
然后 @{ ... }
dereferences 将大括号的内容作为一个数组,然后 \
对其进行引用。引用取消了取消引用,因此它与
my $ref = $seq->{ $label }{ $ARGV[4] }
除了取消引用会导致程序终止
Not an ARRAY reference
如果内容不是对数组的引用
现在我们有
$seq->{ $label }{ $ARGV[4] }
它使用 $seq
作为对哈希哈希的引用,并使用 $label
作为第一级键和 $ARGV[4]
(第五个命令行参数)作为二级键
那句话是由我慷慨地称为一个可怜的程序员的人写的。我怀疑它是否打算检查哈希值是否为数组引用,并且至少应该将 $ARGV[4]
复制到命名变量以使含义清晰
关于perl - 需要帮助解释这个 perl 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34539439/