首页 > 解决方案 > 标量到数组的转换

问题描述

我正在查看 Perl 脚本,我有一行:

my (@parmTypesList) = @$function_type_ref;

$function_type_ref是传递给当前函数的字符串。是什么@$意思??????

标签: perl

解决方案


@$var是 的缩写@{ $var },等价于$var->@*。这是一个数组取消引用。

它期望$var持有对数组的引用,并产生以下内容之一:

  • 在标量上下文中,数组的元素数
  • 在列表上下文中,数组元素的值。
  • 当需要数组时(例如@$var = ..., push @$var, ...),数组本身。

在这种情况下,它是第二个。


尽管有名称,但对函数的引用绝不会起作用。

但是字符串可能会起作用,因为字符串可以用作参考。在这种情况下,字符串应该是变量的名称。这是一件非常可怕的事情,所以我们告诉 Perl 不要让我们使用use strict;or来做这件事use v5.12;

明确一点:您应该始终使用use strict;或等效。


推荐阅读