更新:我知道的一切有關引用/取消引用來自這裏:http://www.thegeekstuff.com/2010/06/perl-array-reference-examples/如何取消引用哈希引用
我與圖書館的工作是(從庫文件):
Returns a reference to an array of hash references
這對我來說在概念上是有意義的(我並不陌生編程),但在功能上沒有意義(我顯然對Perl很新穎)。
下面是一些代碼:
my $Obj = QA::STK::ModuleImUsing->new(arguments, to, new);
$Obj->createClient();
$Obj->sync(['/tmp/files/...']);
my $result = $Obj->method_in_question(['/tmp/files/ff-latest.xml']);
到目前爲止好。 $result
現在擁有對數組的引用。
所以,當我這樣做:
print "Result: @{ $result} \n";
我得到:
Result: HASH(0x20d95b0)
可愛!但我仍然需要取消引用散列。然而,這裏的事情變得怪怪的(或者他們已經變得奇怪了?)。
my $hash_ref = @{ $result};
print Dump($hash_ref));
我得到這個:
$VAR1 = 1;
...這是不是我所期待的。
我的期望是錯的還是我以錯誤的方式解引用?
'my $ hash_ref = @ {$ result};' - 對不起,但那應該怎麼辦?將數組賦給標量? )你爲什麼不直接拋出'$ result'本身? – raina77ow
我想*它應該取消引用$ result引用的數組。既然這應該是一個哈希引用,我把它變成了一個標量。我不知道這是否是錯誤的...... – Ramy
你不需要推定一個數組 - 你需要得到它的第一個元素(這是一個散列的引用)。一種可能的方法是使用這種表示法:'my $ hash_ref = $ result - > [0];' – raina77ow