[Cascavel-pm] IDIOMA ERRADO [Was: expressao regular]
Luis Motta Campos
luismottacampos em yahoo.co.uk
Quinta Janeiro 24 08:40:10 PST 2008
Luis Motta Campos wrote:
> my $data;
> open my $file, $filename
> and do { local $/ = undef; $data = <$file>; }
> and close $file
> or die $!
> ;
Bom, quando a gente está errado, tem de admitir. Eu troquei as bolas
aqui, e isso precisa ser reparado.
Este idioma está previsto para funcionar no 5.12, mas AINDA NÃO É PERL
VÁLIDO (até a versão 5.10).
O problema é que as declarações de variáveis feitas com "my()" apenas
são "vistas" pelo interpretador *depois* *que* *o* */statement/*
*termina*. Isso quer dizer que, no idioma acima, $file "não existe" até
ser tarde demais (quando o /statement/ termina, depois dos "and"s e "or
die").
Claro, o perdido aqui deveria parar de ler as especificações de
funcionalidades futuras achando que está lendo documentação. ;)
O melhor approach para isso (segundo o Abigail, do Amsterdam.pm) é
my $data = do {
open( my $file, $filename ) or die $!;
local $/;
my $content = <$file>;
close $file or die $!;
return $content;
};
As minhas desculpas pela superposição quântica de funcionalidades.
Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}
Mais detalhes sobre a lista de discussão Cascavel-pm