【发布时间】:2011-06-19 10:09:48
【问题描述】:
在this question,发帖人在一行中询问了如何执行以下操作:
sub my_sub {
my $ref_array = shift;
my @array = @$ref_array;
}
根据我对基本 Perl 魔法的了解,我可以通过简单地使用类似的东西来避免:
sub my_sub {
my $ref_array = shift;
for (@$ref_array) {
#do somthing with $_ here
};
#use $ref_array->[$element] here
}
但是在this answer SO 的一位当地僧侣 tchrist 建议:
sub my_sub {
local *array = shift();
#use @array here
}
当我问
在尝试学习中级 Perl 魔术,我能问一下,你是什么 在这里设置什么?你是 将@array 的引用设置为 传入的arrayref?如何 你知道你创建@array 和 不是 %array 或 $array?我可以在哪里 了解有关此 * 运算符的更多信息 (perlop?)。谢谢!
有人建议我将其作为新帖子提出,尽管他确实提供了很好的参考。无论如何,来了?有人可以解释什么被分配给什么以及如何创建@array而不是%array或$array?谢谢。
【问题讨论】:
-
您可能可以从this answer 中收集到一些关于 typeglob 的重要见解,这里还没有涉及到。