Overman,<br><br>A paca que escreveu esse exemplo não contava com pessoas investigativas como você. Na sub message, mude as duas ocorrências da variável $status para outro nome, sei lá, por exemplo, $xpto.<br><br>A partir daí, faça seus testes novamente e veja se fica mais claro.<br>
<br>[]s,<br>Russo<br><br><div class="gmail_quote">2008/6/10 Daniel de Oliveira Mantovani &lt;<a href="mailto:daniel.oliveira.mantovani@hotmail.com">daniel.oliveira.mantovani@hotmail.com</a>&gt;:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">




<div>
<br>Mas, o livro então que está me confundindo olha só esse programa, ( jogo ) que eu aprendi fazer com o livro:<br><br>#!/usr/bin/perl<br>$resultado = soma();<br>if ($resultado == 7 or $resultado == 11)        {<br>$status = &quot;ganhou&quot;;<br>
}<br>elsif ($resultado == 2 or $resultado == 3 or $resultado == 12)        {<br>$status = &quot;perdeu&quot;;<br>}<br>elsif ($resultado == 4 or $resultado == 5 or $resultado == 6 or $resultado == 8 or $resultado == 9)        {<br>$status = &quot;continua&quot;;<br>
$pontos = $resultado;<br>}<br>while ($status eq &quot;continua&quot;)        {<br>$resultado = soma();<br>if ($resultado == 7)        {<br>$status = &quot;perdeu&quot;;<br>}<br>elsif ($resultado == $pontos)        {<br>$status = &quot;ganhou&quot;;<br>
}<br>}<br>print message();<br><br>sub soma<br>{<br>($dado1 , $dado2) = (indivi() , indivi());<br>$somas = $dado1 + $dado2;<br>print &quot;Jogador lançou $dado1 + $dado2 e a soma é $somas\n&quot;;<br>return $somas<br>}<br>
<br>sub indivi <br>{<br>return 1 + int( rand ( 6 ) );<br>}<br><br>sub message<br>{<br>$status = shift;<br>return print &quot;Parabéns você ganhou\n&quot; if $status eq &quot;ganhou&quot;;<br>return print &quot;Você perdeu\n&quot;;<br>
}<br><br>Na sub message:<br>tem lá:<br>$stauts = shift;<br>Mas seu apagar isso, o problema executa normalmente.<br>isso retira o primeiro valor de $status correto ?<br>Mas isso é uma coisa inútil concordam ?(Neste programa)<br>
<br>Acho que o livro tinha que por um exemplo que o shift fosse realmente necessário no programa.<div class="Ih2E3d"><br>&quot;<br><ul><li><span style="font-family: courier new,monospace;">pop&nbsp;&nbsp;&nbsp;&nbsp; - remove o último elemento do array e retorna este elemento</span></li>
<li><span style="font-family: courier new,monospace;">push&nbsp;&nbsp;&nbsp; - adiciona elementos ao final do array</span></li><li><span style="font-family: courier new,monospace;">shift&nbsp;&nbsp; - remove o primeiro elemento do array e retorna este elemento</span></li>
<li><span style="font-family: courier new,monospace;">splice&nbsp; - adiciona or remove elementos em qualquer lugar do array</span></li><li><span style="font-family: courier new,monospace;">unshift&quot;</span></li></ul></div>
<span style="font-family: courier new,monospace;">Isso eu já estudei.<br>&quot;ARGV&quot;, eu ainda não estudei.<br></span><br><br><span style="font-weight: bold;">Daniel Mantovani</span><br>&quot;A sabedora é a virtude dos sábios.&quot;<br>
&quot;Até um tolo pode passar por sábio e inteligente se ficar calado&quot;<br><br><br><blockquote><hr>Date: Tue, 10 Jun 2008 19:28:27 -0300<br>From: <a href="mailto:shonorio@gmail.com" target="_blank">shonorio@gmail.com</a><br>
To: <a href="mailto:saopaulo-pm@mail.pm.org" target="_blank">saopaulo-pm@mail.pm.org</a><br>Subject: Re: [SP-pm] Desculpa a lista<div><div></div><div class="Wj3C7c"><br><br><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 &#39;manusear&#39; arrays são :<br>

</span><ul><li><span style="font-family: courier new,monospace;">pop&nbsp;&nbsp;&nbsp;&nbsp; - remove o último elemento do array e retorna este elemento</span></li><li><span style="font-family: courier new,monospace;">push&nbsp;&nbsp;&nbsp; - adiciona elementos ao final do array</span></li>

<li><span style="font-family: courier new,monospace;">shift&nbsp;&nbsp; - remove o primeiro elemento do array e retorna este elemento</span></li><li><span style="font-family: courier new,monospace;">splice&nbsp; - 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 &#39;@_&#39; e &#39;$_&#39;.<br>

<br><span style="font-family: courier new,monospace;">A &#39;@_&#39; é 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>&nbsp; my $v01 = shift;<br>&nbsp; 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 &#39;$_&#39;&nbsp; é 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 &#39;my&#39; (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 &#39;strict&#39;. 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" target="_blank">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>2008/6/10 Daniel de Oliveira Mantovani &lt;<a href="mailto:daniel.oliveira.mantovani@hotmail.com" target="_blank">daniel.oliveira.mantovani@hotmail.com</a>&gt;:<br>

<blockquote style="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 &quot;My&quot;<br>

Exemplo:<br>my $variavel = shift;<br>O My eu sei teoricamente o que ele faz, o shift eu sei usar ele perfeitamente com &quot;Array&quot;, 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><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" target="_blank">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>&quot;o animal satisfeito dorme&quot;. - Guimarães Rosa
</div></div></blockquote><br><hr>Veja mapas e encontre as melhores rotas para fugir do trânsito com o Live Search Maps! <a href="http://www.livemaps.com.br/index.aspx?tr=true" target="_blank">Experimente já!</a></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>Alexei Znamensky [russoz_gmail_com] [<a href="http://russoz.wordpress.com">russoz.wordpress.com</a>] [<a href="http://www.flickr.com/photos/alexeiz">www.flickr.com/photos/alexeiz</a>]<br>
&quot;Though we live in trying times, we&#39;re the ones who have to try&quot;