我一直在使用Perl一段時間,但卻受到一個語法問題的困擾。 在一些包中,一個方法可以返回一個數組。例如如何訪問從perl中的對象方法返回的數組元素?
$root->getlist();
將返回一個數組。現在我想獲得結果的第一個元素。當然我可以這樣做:
my @results = $root->getlist();
if($results[0] =~ /wow/) {
print "Qualified result";
}
但是,這很麻煩。有沒有辦法讓第一條線和第二條線相結合?我試過但失敗了。
if(${$root->getlist()}[0] =~ /wow/) {
print "Qualified result";
}
有沒有辦法快速做到這一點?
一個更好的例子: 考慮這個以下包:
package Try;
sub new {
my $package = shift;
return bless({}, $package);
}
sub getList {
return (1,2,3,4,5);
}
1;
現在我有一個用戶的PL文件是這樣的:
use lib '.';
use Try;
use strict;
my $obj = Try->new();
print ($obj->getList())[0];
試圖運行該腳本將導致:
語法錯誤在perlarrayaccess.pl行6附近「)[」
perlarrayaccess.pl的執行由於編譯錯誤而中止。
該語法錯誤是因爲第一個開放括號被解析爲圍繞「print」參數的括號。嘗試'打印$ obj-> getList()[0];'沒有額外的括號,看它是否工作。 –
除'嚴格使用'外,您還應該'使用警告'。如果你這樣做了,你會發現你在最後一個例子中試圖調用'print'作爲一個函數。 – gpojd