<span style="font-family: courier new,monospace;">Daniel,</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">O pessoal já explicou o quê é shift, mas vou avançar um pouco mais e vou dividir o email em duas partes, sendo elas:<br>
<br>operadores de array :<br></span><div style="margin-left: 40px;"><span style="font-family: courier new,monospace;">Os operadores podem ser agrupados por função e os operadores responsável por 'manusear' arrays são :<br>
</span><ul><li><span style="font-family: courier new,monospace;">pop - remove o último elemento do array e retorna este elemento</span></li><li><span style="font-family: courier new,monospace;">push - adiciona elementos ao final do array</span></li>
<li><span style="font-family: courier new,monospace;">shift - remove o primeiro elemento do array e retorna este elemento</span></li><li><span style="font-family: courier new,monospace;">splice - adiciona or remove elementos em qualquer lugar do array</span></li>
<li><span style="font-family: courier new,monospace;">unshift - adiciona elementos no início do array</span></li></ul><span style="font-family: courier new,monospace;">A questão é que todos estes operadores precisam de pelo um dado/variável para trabalhar, o pop e shift por exemplo. Quanto o nome da variável não é definido aí acontece as mágias negras do Perl, as variáveis especiais (perldoc perlvar). Entre estas variáveis especiais temos duas muito utilizada e invisíveis, a '@_' e '$_'.<br>
<br><span style="font-family: courier new,monospace;">A '@_' é o array padrão para os operadores que estão aguardando um array, ou seja, se você escrever :</span><br style="font-family: courier new,monospace;"></span><div style="margin-left: 40px; font-family: courier new,monospace;">
my $x = shift @meu_array; # o shift vai remover o primeiro elemento do array @meu_array e colocar na variável $x;<br>my $x = shift; # o shift vair remover o primeiro elemento do array @_, porque você não definiu uma variável, e colocar na variável $x.<br>
</div><span style="font-family: courier new,monospace;">E como você define este valor padrão, quando você passa valores para uma função, por exemplo:</span><br style="font-family: courier new,monospace;"><div style="margin-left: 40px; font-family: courier new,monospace;">
sub f {<br> my $v01 = shift;<br> my $v02 = shift @_; # esta faz o mesmo que o primeiro, só que estou declarando o @_<br><span style="font-family: courier new,monospace;">}</span><br style="font-family: courier new,monospace;">
</div><span style="font-family: courier new,monospace;">O '$_' é a mesma coisa, mas ele é o valor padrão para operadores que trabalham com escalares.</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">
</div><span style="font-family: courier new,monospace;">declaração de variáveis:</span><br style="font-family: courier new,monospace;"><div style="margin-left: 40px; font-family: courier new,monospace;">O 'my' (nunca My), é um operador de declaração de escopo de variável. Faz parte da boa política de programação e perl e sempre será exigido quando você utilizar o pragma 'strict'. Então sempre, digo SEMPRE, começe um código em perl assim :<br>
<div style="margin-left: 40px;">#!/bin/perl<br>use strict;<br>use warnings;<br></div></div><div style="margin-left: 40px;"><div style="font-family: courier new,monospace;"><br></div><div style="font-family: courier new,monospace;">
<br></div></div><span style="font-family: courier new,monospace;">Agora, começe a dar uma lida na documentação, dê uma olhada no site <a href="http://www.perl.org.br">www.perl.org.br</a>, pois este teu livro está muito fraco. Se vc está no meio dele e ainda está com estas dúvidas.</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Abraços,</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Solli M. Honório</span><br>
<span style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"></span><br><div class="gmail_quote">2008/6/10 Daniel de Oliveira Mantovani <<a href="mailto:daniel.oliveira.mantovani@hotmail.com">daniel.oliveira.mantovani@hotmail.com</a>>:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div>
Pessoas, queria me desculpar com vocês por atitudes imaturas.<br>Sei que tenho muito o que aprender, principalmente sobre Perl, e não existe lugar melhor para o aprendizado, do que com os Mestres Dobradores de Perl.<br>Espero recuperar a elegância natural de um newbie.<br>
E espero recuperar isso com atitudes e perguntas construtivas.<br>Para começar eu não intendi a utilidade do shift quando usado junto à uma variável,<br>Exemplo:<br>$variavel = shift;<br>e também não intendi a utilidade do "My"<br>
Exemplo:<br>my $variavel = shift;<br>O My eu sei teoricamente o que ele faz, o shift eu sei usar ele perfeitamente com "Array", para retirar o primeiro argumento, porém o shift com variável e o My, na prática eu não intendi muito bem, pois como eu já disse é a minha primeira linguagem de programação.<br>
Gostaria que me mostrassem programas simples com shift junto à uma variável, e o My, sei que simples para vocês é dificilimo para mim, então pesso que escolham com cuidado.<br><br>Obrigado.<br><br>Abraços a todos.<br><font color="#888888"><br>
Daniel Mantovani<br></font><div class="WgoR0d"><br><hr>Notícias direto do New York Times, gols do Lance, videocassetadas e muitos outros vídeos no MSN Videos! <a href="http://video.msn.com/?mkt=pt-br" target="_blank">Confira já!</a></div>
</div>
<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>"o animal satisfeito dorme". - Guimarães Rosa