我正在思考是否可以在Perl中的一行中创建数组引用的问题。有点像你定义一个数组。我通常会做以下事情:
#!/usr/bin/perl
# your code goes here
use warnings;
use strict;
use Data::Dumper;
my @array = qw(test if this works);
my $arrayref = \@array;
print Dumper($arrayref);
我的想法是你应该能够这样做:
my $arrayref = \(qw(test if this works);
然而,这不符合我的预期。这甚至可能吗?
答案 0 :(得分:7)
你可以通过使用'square-bracketed anonymous array constructor'来做到这一点。它将创建一个数组引用'literal'
my $arrayref = [ qw(test if this works) ];
或列出每个成员:
my $arrayref = [ 'test', 'if', 'this', 'works' ];
您可以使用数据转储程序验证这两个结果:
$VAR1 = [
'test',
'if',
'this',
'works'
];
答案 1 :(得分:2)
如果您的目标是在一行中创建数组引用,请使用方括号创建一个数组引用,这将创建一个匿名数组。
use Data::Dumper;
my $arrayRef = [qw(test if this works)];
print Dumper($arrayRef);
所以,如果这是你想要做的,那就有可能。
答案 2 :(得分:-1)
Quote::Ref
模块为数组/散列引用实现了 qw(引用运算符)。
use Quote::Ref 'qwa';
my $arrayref = qwa( test if this works );
# ==> $arrayref = [ qw( test if this works ) ]
不知道它是否为这么简单的东西增加了可读性,只需添加 OMWTDI...不过对于难以记住 [ qw(test if this works) ];
语法的人来说,它可能很方便。