Perl 后缀解引用语句(\@a)->;@*)v5.22
我读过关于后缀取消引用的文章,我想尝试一下,但我无法让这个简单的例子起作用Perl 后缀解引用语句(\@a)->;@*)v5.22,perl,Perl,我读过关于后缀取消引用的文章,我想尝试一下,但我无法让这个简单的例子起作用 use v5.22; my @a = ('hello', 'bye', 'see you'); say((\@a)->@*); 我应该打印阵列,但我得到的只是: 数组在hola.pl第3行中运算符期望的位置找到,在该行的末尾 (之前缺少运算符?)hola.pl第7行附近的语法错误 “->@” 我的perl版本是: 这是为x86_64-linux-gnu-thread-multi构建的perl 5,版本22,sub
use v5.22;
my @a = ('hello', 'bye', 'see you');
say((\@a)->@*);
我应该打印阵列,但我得到的只是:
数组在hola.pl第3行中运算符期望的位置找到,在该行的末尾
(之前缺少运算符?)hola.pl第7行附近的语法错误
“->@”
我的perl版本是:
这是为x86_64-linux-gnu-thread-multi构建的perl 5,版本22,subversion 1(v5.22.1)
该功能在5.22.x中是实验性的,引用: 后缀解引用不再是实验性的 使用“postderef”和“postderef_qq”功能不再发出警告。现行守则 这将禁用他们以前使用的“实验::postderef”警告类别 我们将继续努力。“postderef”功能无效;所有Perl代码都可以使用 后缀取消引用,而不管范围中有什么特性声明。5.24 功能包现在包括“postderef_qq”功能 引述: 后缀解除引用语法 在Perl 5.20.0中引入 在Perl 5.24.0中接受 这就是为5.20.0+编写代码的方式。请注意,可能无法与默认Perl软件包一起安装,即需要单独安装:
#/usr/bin/perl
使用v5.20;
严格使用;
使用警告;
使用实验qw(postderef);
我的@a=(‘你好’、‘再见’、‘再见’);
说(@a);
说({\@a});
说(\@a)->@*);
出口0;
输出(这是Perl5,版本28,Subversion1(v5.28.1)
):
你好,再见
你好,再见
你好,再见
i、 e.这三种功能都是等效的。该功能可按如下方式激活:
use feature qw( postderef );
no warnings qw( experimental::postderef );
这可以归结为
use experimental qw( postderef );
postderef
功能也由use功能:5.24'激活代码>(因此由使用v5.24;
)激活,但这两个使用功能:5.20'代码>或使用功能:5.22'代码>(因此,无论是使用v5.20;
还是使用v5.22;
),因为该功能在5.20和5.22中仍处于试验阶段
该功能在5.20和5.24之间没有更改,因此在5.20和5.22中使用是安全的,因此可以安全地忽略警告。您的Perl版本是什么?运行perl-v
查看版本。另外,say((\a)->@*)
可能应该是say(\@a)->@*)
?这是为x86_64-linux-gnu-thread构建的perl 5,版本22,subversion 1(v5.22.1)-multi@Corion我感到抱歉,我张贴了手工复制的代码,没有时间查看勘误表;我在say(\@a)->@*)中遇到了同样的错误
在您的代码中,该功能在5.22.x中是实验性的。我已经更新了我的答案。解决了,谢谢,这是问题所在,我将编译一个更新的版本。更新了我的答案如何让它与Fedora上的5.20.0+@StefanBecker一起工作许多核心模块与解释器分开打包,您需要安装perl
(这个以前的名称是perl core
)在5.24+中,它实际上根本不需要任何特性,而是自动激活的。