[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