2008/11/22 owen nirvana &lt;<a href="mailto:freeespeech@gmail.com">freeespeech@gmail.com</a>&gt;:<br>&gt; 传递的参数是数组或者哈希的时候,怎么获取相关参数<br>&gt;<br><br>以数组为参时:<br><br>sub func {<br> &nbsp; &nbsp;my @b = @_;<br> &nbsp; &nbsp;# ...<br>}<br><br>my @a = (1,2,3);<br>
func(@a);<br><br>哈希为参时:<br><br>sub func {<br> &nbsp; &nbsp; my %b = @_;<br>}<br><br>my %a = (cat =&gt; 1, dog =&gt; 2);<br>func(%a);<br><br>这里的行为是哈希和数组会自动平展成 @_ 中的离散元素 :) 如果想避免,可以使用数组和哈希的引用,例如:<br><br>sub func {<br> &nbsp; &nbsp;my @b = @{ $_[0] }<br>
 &nbsp; &nbsp;# ...<br>}<br><br>my @a = (1,2,3);<br>func(\@a);<br><br># OR &nbsp;func([1,2,3])<br><br>而对于哈希:<br><br>my func {<br> &nbsp; &nbsp;my %b = %{ $_[0] };<br> &nbsp; &nbsp;# ...<br>}<br><br>my %a = (cat =&gt; 1, dog =&gt; 2);<br>func(\%a);<br><br># OR &nbsp;func( { cat =&gt; 1, dog =&gt; 2 } );<br>
<br>参数是否 slurpy 的行为在 Perl 6 中可以更优雅地控制。。。呵呵<br><br>Hope this helps :)<br><br>-agentzh