perl - 需要帮助解释这个 perl 代码

标签 perl

我很难理解这个小代码片段

我的 $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/

相关文章:

perl - 检查有效命令行参数的简单方法?

perl - 在 Perl 中计算字符串中单词数的最快方法是什么?

perl - 如何与具有哈希属性的 Perl 对象交互?

json - 在 Perl Mojolicious 中渲染 JSON 时防止转义字符

mysql - Perl/mysql 浮点不精确

xml - 从 XML 文件中提取标签信息到 Excel 文件

perl - 如何遍历 Perl PDL piddle?

perl - Perl 中的跨平台 globbing

perl - 为什么 Perl 在打印文件时会占用我的内存 (RAM)?

perl:在第 N 个位置写入文件