On 7/23/07, <b class="gmail_sendername">Igor Sutton Lopes</b> <<a href="mailto:igor.sutton@gmail.com">igor.sutton@gmail.com</a>> wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Não é bem assim, no caso em questão Wendel. Quando você utiliza '=>', o<br>perl transforma tudo que está na esquerda dele em string. Dito isso, os<br>seguintes comandos são idênticos:<br><br>%my_hash = (a => 1);
<br>%my_hash = ('a', 1);<br><br>Executando o código acima com -MO=Deparse (antes que alguém fale, sim,<br>estou usando Windows neste computador :-P):<br><br>C:\WINDOWS\system32\cmd.exe /c perl -MO=Deparse \temp\t.pl
<br>(%hash) = ('a', 1);<br>(%hash) = ('a', 1);<br>\temp\t.pl syntax OK<br><br>Agora a coisa muda de figura quando você tem palavras compostas como<br>valor da esquerda: neste caso é sempre obrigatório ter aspas na chave,
<br>como em "(%hash) = ('minha chave' => 1)".<br><br>Espero que tenha ficado mais claro!<br><br></blockquote></div><br>Se fosse assim isso aqui não aconteceria:<br><br>perl -e '%my_hash = ( ç => 1)'
<br>Unrecognized character \xC3 at -e line 1.<br><br clear="all">Sendo que "ç" não é uma palavra composta. Se não me engano ele só vira string se bate com o \w+ usual, que foi o que eu quis dizer com "ser um identificador válido". Isto é, perl "estrito" não gosta que se use barewords, mas é bonzinho se elas estiverem à esquerda do => .
<br><br>Claro que isso é só um palpite meu baseado em observações, não em documentação ^_^;;;<br><br>[]s<br>Wendel<br>--<br>"Não ajustar o auto-ajuste" - <a href="http://wendel.scardua.net/">http://wendel.scardua.net/
</a>