如何将函数(如拆分)返回的数组转换为数组引用?

时间:2011-11-07 04:26:28

标签: arrays perl reference

考虑以下代码:

@tmp = split(/\s+/, "apple banana cherry");
$aref = \@tmp;

除了不优雅外,上述代码还很脆弱。说我用这一行跟着它:

@tmp = split(/\s+/, "dumpling eclair fudge");

现在$$aref[1]是“eclair”而不是“banana”。

如何避免使用临时变量?

从概念上讲,我正在考虑像

这样的东西
$aref = \@{split(/\s+/, "apple banana cherry")};

3 个答案:

答案 0 :(得分:19)

如果你想要一个array-ref:

,你可以这样做
my $aref = [ split(/\s+/, "apple banana cherry") ];

答案 1 :(得分:3)

我明白了:

$aref = [split(/\s+/, "apple banana cherry")];

答案 2 :(得分:2)

虽然我喜欢mu的答案(并且会先在这里使用这种方法),但请记住,即使不使用函数,变量也可以很容易确定范围,想象一下:

my $aref = do {
  my @temp = split(/\s+/, "apple banana cherry");
  \@temp;
};
print join("-", @$aref), "\n";
# with warnings: Name "main::temp" used only once: possible typo at ...
# with strict: Global symbol "@temp" requires explicit package name at ...
print join("-", @temp), "\n";

快乐的编码。