[Cascavel-pm] Res: expressao regular

Luis Motta Campos luismottacampos em yahoo.co.uk
Quinta Janeiro 24 04:18:55 PST 2008


Patty Silva wrote:
> Qual a diferenca em colocar
> 
> open(FILE,"<$filename).....

Isso é erro de sintaxe: você tem de abrir e fechar as aspas. ;)

open( FILE, "<$filename" );

custa uma interpolação inútil e obriga o open() a olhar o nome do
arquivo para saber o que você quer - não é muito conveniente.

Também tem o problema de legibilidade, mas este é menor, eu acho.

> de
> 
> open my $file,"<",$filename

esta é a minha forma predileta. Mas eu quase nunca uso (") quando quero
colocar literais do tipo string no meu código. Eu normalmente uso o
operador q//, quando é uma palavra ou frase, e aspas simples (') quando
é apenas um caracter. Assim, evito a possibilidade de interpolações
acidentais dentro das minhas strings literais. ;)

Note também que FILE (no primeiro exemplo) é uma /bareword/, uma prática
que a gente está recomendando que as pessoas abandonem faz muitos anos.
O equivalente "my $file" é considerado boa prática de programação, além
de ser mais seguro e legível.

Não se esqueça de que você precisa tratar erros, quando abre um arquivo.

> e quando eu faco:
> 
> open my $file, $filename or die $!;
> $data .= do { local $/; <$file>; }
> close $file;
> 
> da erro de sintaxe:
> syntax error at test.pl line 27, near "close"

Sim, ele disse "perto do comando 'close()'": quer dizer que a linha
anterior precisa de um ';' (depois do bloco do "do"):

open my $file, $filename or die $!;
$data .= do { local $/; <$file>; } ;
close $file;

Consegue ver a diferença na linha do meio?

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