Obrigado Breno pela amplitude. Ficou mais claro agora.<br><br>Você usa protótipo no seu dia-a-dia? e se usa o que você faz?<br><br>[]s<br><br><div class="gmail_quote">2008/12/22 breno <span dir="ltr">&lt;<a href="mailto:breno@rio.pm.org">breno@rio.pm.org</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">2008/12/22 Daniel de Oliveira Mantovani &lt;<a href="mailto:daniel.oliveira.mantovani@gmail.com">daniel.oliveira.mantovani@gmail.com</a>&gt;:<br>

<div class="Ih2E3d">&gt; my $stat = período();<br>
&gt; Bom(a) $stat pessoal.<br>
&gt;<br>
&gt; Estou estudando Protótipos, e tenho algumas dúvidas vou tentar explicar.<br>
&gt;<br>
&gt; Por exemplo push(@array,$item);<br>
&gt;<br>
&gt; No protótipo é a mesma coisa que isso ?<br>
&gt;<br>
&gt; syb mypush (@array, $item);<br>
&gt;<br>
&gt; Ele faz a mesma coisa que push só que joga na sub rotina e o valor fica<br>
&gt; armazenado em @_ ?<br>
&gt;<br>
<br>
</div>Daniel,<br>
<br>
protótipos são uma espécie de verificação de argumentos em tempo de<br>
compilação, e permitem que vc chame subrotinas sem os parêntesis sem<br>
gerar ambiguidade, como as funções built-in do Perl (&quot;push&quot;, por<br>
exemplo). A declaração de protótipos não envolve o nome da variável<br>
onde vc pretende colocá-la, apenas o símbolo do tipo de variável ($,<br>
@, %, &amp;) que espera receber como parâmetros.<br>
<br>
O &quot;perldoc perlsub&quot; fala muito bem sobre isso e vale a leitura. Alguns<br>
exemplos de lá:<br>
<br>
Declarado como: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Chamado como:<br>
<br>
sub mylink ($$) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mylink $old, $new<br>
sub myvec ($$$) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; myvec $var, $offset, 1<br>
sub myindex ($$;$) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; myindex &amp;getstring, &quot;substr&quot;<br>
sub mysyswrite ($$$;$) &nbsp; &nbsp; &nbsp; mysyswrite $buf, 0, length($buf) - $off, $off<br>
sub myreverse (@) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; myreverse $a, $b, $c<br>
sub myjoin ($@) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; myjoin &quot;:&quot;, $a, $b, $c<br>
sub mypop (\@) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mypop @array<br>
sub mysplice (\@$$@) &nbsp; &nbsp; &nbsp; mysplice @array, @array, 0, @pushme<br>
sub mykeys (\%) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mykeys %{$hashref}<br>
sub myopen (*;$) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;myopen HANDLE, $name<br>
sub mypipe (**) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mypipe READHANDLE, WRITEHANDLE<br>
sub mygrep (&amp;@) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mygrep { /foo/ } $a, $b, $c<br>
sub myrand ($) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;myrand 42<br>
sub mytime () &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mytime<br>
<br>
<br>
Para pegar &quot;automagicamente&quot; os valores da sua subrotina vc não quer<br>
protótipos, e sim algo como o Method::Signatures<br>
(<a href="http://search.cpan.org/perldoc?Method::Signatures" target="_blank">http://search.cpan.org/perldoc?Method::Signatures</a>)<br>
<br>
<br>
[]s<br>
<br>
-b<br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
</blockquote></div><br><br clear="all"><br>-- <br><a href="http://mantovanihouse.blogspot.com/">http://mantovanihouse.blogspot.com/</a><br><br>-------(\_------------_/)-----------<br>-------)--(----------)--(-----------<br>
------(----(---------)----)----------<br>-------)----(-------)----(-----------<br>-------(----(-------)----)-----------<br>--------\_-(\\.---.//)-_/------------<br>----------\)&#39; -8--8- &#39;(/--------------<br>-----------/------------\---------------<br>
----------(--)--------(--)--------------<br>------------(_c__c_)----------------<br>----------------------------------------<br>