簡體   English   中英

Perl-從子例程返回兩個數組引用,希望僅處理第一個

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM