4
我想要一個perl子例程,它通過Tie :: IxHash模塊創建並返回一個有序散列。它看起來是這樣的:在Perl中,如何從子例程返回一個並列散列?
sub make_ordered_hash {
my @hash_contents = munge_input(@_); # I get a list of alternating keys and values
tie(my %myhash, Tie::IxHash, @hash_contents);
return %myhash;
}
現在,如果我做my %ordered_hash = make_ordered_hash(@input_stuff)
,將%ordered_hash實際上被捆綁,或將它解壓縮%myhash,到一個列表,然後創建一個新的(普通,無序的)從哈希清單?如果我不能以這種方式返回並列散列,我可以返回一個引用嗎?也就是說,我可以通過讓make_ordered_hash返回\%myhash
來修復它嗎?
捆綁或不是,無論如何,返回一個大數據結構的ref可能是可取的(副本可能是昂貴的)。 – Thilo 2010-10-28 23:36:40
@Thilo - 確實,儘管有時候你想要一個副本,例如當你將數據傳遞到不能保證不變的多個地方時。例如。在某些算法中將用作堆棧的列表。複製速度當然是一個有效的考慮因素,請記住它需要在全文中查看;) – DVK 2010-10-28 23:42:22
同意。但在這種情況下,原始副本將會超出範圍並收集垃圾。而且,還有一種情況是您將數據傳遞給多個地方,並希望查看他們所做的更改。 – Thilo 2010-10-28 23:48:18