[SP-pm] Problema com encoding
Igor Sutton Lopes
igor.sutton em gmail.com
Segunda Julho 23 00:59:38 PDT 2007
Wendel Scardua wrote:
> [sniiiiiiiip]
> Perl está sendo bem bonzinho em deixar você usar strings sem aspas
> como chaves de hash, mas a gente não pode abusar dessa bondade :-)
>
> Barewords (essas strings "nuas", sem aspas) precisam ser
> identificadoes válidos, então você não pode usar coisas como ç . Se
> você usar aspas tudo fica ok.
Não é bem assim, no caso em questão Wendel. Quando você utiliza '=>', o
perl transforma tudo que está na esquerda dele em string. Dito isso, os
seguintes comandos são idênticos:
%my_hash = (a => 1);
%my_hash = ('a', 1);
Executando o código acima com -MO=Deparse (antes que alguém fale, sim,
estou usando Windows neste computador :-P):
C:\WINDOWS\system32\cmd.exe /c perl -MO=Deparse \temp\t.pl
(%hash) = ('a', 1);
(%hash) = ('a', 1);
\temp\t.pl syntax OK
Agora a coisa muda de figura quando você tem palavras compostas como
valor da esquerda: neste caso é sempre obrigatório ter aspas na chave,
como em "(%hash) = ('minha chave' => 1)".
Espero que tenha ficado mais claro!
Mais detalhes sobre a lista de discussão SaoPaulo-pm