You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl中如何一行创建数组引用?求可行实现方式

在Perl中一行创建数组引用的方法

当然可以!Perl提供了非常简洁的方式直接一行创建数组引用,不用先声明普通数组再取引用。下面来一步步解决你的问题:

最推荐的写法

直接用方括号[]包裹你的列表(比如qw生成的列表),它会自动创建一个匿名数组并返回其引用:

my $arrayref = [qw(test if this works)];

用Data::Dumper验证的话,输出和你原来的写法完全一致:

#!/usr/bin/perl
use warnings;
use strict;
use Data::Dumper;

my $arrayref = [qw(test if this works)];
print Dumper($arrayref);

输出结果:

$VAR1 = [
          'test',
          'if',
          'this',
          'works'
        ];

为什么你的尝试没生效?

你之前写的my $arrayref = \(qw(test if this works);首先有语法错误——少了一个闭合括号。就算修正为my $arrayref = \(qw(test if this works));,这时候\(...)的行为和你预期的不一样:

  • \操作符作用于括号包裹的表达式时,会在标量上下文里计算表达式的值,然后返回这个标量的引用。
  • qw(...)在标量上下文里返回的是数组的元素个数(这里是4),所以你得到的其实是一个指向数字4的标量引用,而不是数组引用,自然达不到预期效果。

其他可选写法

如果你想换一种方式(虽然不如方括号简洁),也可以用do块来临时创建数组再取引用:

my $arrayref = do { my @temp = qw(test if this works); \@temp };

不过这种写法多了临时变量,不如[]直接高效,所以一般还是推荐第一种方法。

内容的提问来源于stack exchange,提问作者Kirs Kringle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:41:09