[英]Perl - returning two array references from a subroutine, wish to process only the first
從語法上講,以下代碼為什么不起作用? 假設mySub()是一個子例程,該例程返回兩個數組引用:
...
my @list1 = @{${mySub()}[0]};
my @list2 = @{${mySub()}[1]};
...
sub mySub{
...
return \@array1, \@array2;
}
(不要介意我在該子程序上運行了兩次。)據我所知,花括號告訴perl我希望將輸出解釋為一個數組,然后從中提取第一個(第二個)值並將其取消引用。數組。
你的:
@{${mySub()}[1]}
正在將mySub()放在${ ... }[ ... ]
,它期望數組引用查找其元素,就好像您從子例程返回了[ \\@array1, \\@array2 ]
。 您可以在http://perlmonks.org/?node=References+quick+reference上找到一些有用的提示來思考如何處理數據結構參考。
在您的情況下,您要使用列表切片而不是數組元素查找來獲取要取消引用的arrayref:
@{ ( mySub() )[1] }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.