<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>
<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 = "ganhou";<br>}<br>elsif ($resultado == 2 or $resultado == 3 or $resultado == 12)        {<br>$status = "perdeu";<br>}<br>elsif ($resultado == 4 or $resultado == 5 or $resultado == 6 or $resultado == 8 or $resultado == 9)        {<br>$status = "continua";<br>$pontos = $resultado;<br>}<br>while ($status eq "continua")        {<br>$resultado = soma();<br>if ($resultado == 7)        {<br>$status = "perdeu";<br>}<br>elsif ($resultado == $pontos)        {<br>$status = "ganhou";<br>}<br>}<br>print message();<br><br>sub soma<br>{<br>($dado1 , $dado2) = (indivi() , indivi());<br>$somas = $dado1 + $dado2;<br>print "Jogador lançou $dado1 + $dado2 e a soma é $somas\n";<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 "Parabéns você ganhou\n" if $status eq "ganhou";<br>return print "Você perdeu\n";<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.<br>"<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"</span></li></ul><span style="font-family: courier new,monospace;">Isso eu já estudei.<br>"ARGV", eu ainda não estudei.<br></span><br><br><span style="font-weight: bold;">Daniel Mantovani</span><br>"A sabedora é a virtude dos sábios."<br>"Até um tolo pode passar por sábio e inteligente se ficar calado"<br><br><br><blockquote><hr>Date: Tue, 10 Jun 2008 19:28:27 -0300<br>From: shonorio@gmail.com<br>To: saopaulo-pm@mail.pm.org<br>Subject: Re: [SP-pm] Desculpa a lista<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 'manusear' 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 '@_' 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>&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 '$_'&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 '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" 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 class="EC_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="EC_gmail_quote" 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 "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="EC_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
</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='_new'>Experimente já!</a></body>
</html>