[Perl] Uso de una función anónima

Salvador Ortiz Garcia sog@msg.com.mx
26 Aug 2002 20:49:36 -0500


On Mon, 2002-08-26 at 21:10, Ing. Roberto Andrade Fonseca wrote:
> Hola:
> 
> Quiero hacer algo así:
> 
>         open (OUTFILE,">$path_file") || imprime un mensaje y actualiza un=
a variable:
> 
> actualmente tengo:
> 
>         open (OUTFILE,">$path_file") || {$ok = 0, print "No puedo abrir=
 para escritura $ok $path_file"};
> 
> Y parece que jala bien, pero no estoy seguro de que sea la mejor manera, =
pues si cambio la asignación a $ok al final, no jala.
> 
> Si separo con punto y coma (;) la fucnión anónima, tampoco jala.
> 
> ¿Cuál es la manera adecuada de manejar esta situación?

En el ejemplo que muestras el "|| { ... }" NO te contruye una función
anonima, en ese contexto lo que obtienes es una referencia a un HASH!

Probablemente lo que buscas es:

   open(.....) or do {...};

Que por cierto, tampoco crea funciones anónimas, pero hace lo que
quieres. Ahora que, en términos de estílo prefiero:

  unless(open .....) { ... };

Pues reservo la construcción "or ..." a casos con sentencias simples.

Saludos.

Salvador Ortiz.