我使用 Perl 一段时间了,但被一个语法问题困扰。在某些包中,方法可以返回数组。例如
$root->getlist();
Run Code Online (Sandbox Code Playgroud)
将返回一个数组。现在我想获取结果的第一个元素。我当然可以这样做:
my @results = $root->getlist();
if($results[0] =~ /wow/) {
print "Qualified result";
}
Run Code Online (Sandbox Code Playgroud)
然而,这样很麻烦。有没有办法可以将第一行和第二行合并?我尝试过这个但失败了。
if(${$root->getlist()}[0] =~ /wow/) {
print "Qualified result";
}
Run Code Online (Sandbox Code Playgroud)
有没有办法快速做到这一点?
一个更好的例子:考虑以下包:
package Try;
sub new {
my $package = shift;
return bless({}, $package);
}
sub getList {
return (1,2,3,4,5);
}
1;
Run Code Online (Sandbox Code Playgroud)
现在我有一个像这样的用户 pl 文件:
use lib '.';
use Try;
use strict;
my $obj = Try->new();
print ($obj->getList())[0];
Run Code Online (Sandbox Code Playgroud)
尝试运行此脚本将导致:
perlarrayaccess.pl 第 6 行“)[”附近的语法错误
由于编译错误,perlarrayaccess.pl 的执行中止。