open(my $handle, '<', 'file.dat') or die $!;
my @data = map { do_things($_) } <$handle>;
close $handle;
Este imperativo open
y close
de arriba se destacan como un monstruo en otro código agradable. ¿Hay alguna manera de escribir esto de una manera más limpia? Podría escribir mi propia subrutina read_file
, pero debería haber algo como esto ya.¿Cómo deshacerse de la apertura obligatoria de archivos en Perl?
sub read_file {
open(my $handle, '<', $_[0]) or croak $!;
return <$handle>;
}
my @data = map { do_things($_) } read_file('file.dat');
La eficiencia no es importante, pero la solución debe ser multiplataforma.
Hay un error en ese código: se olvidó de comprobar el valor de retorno de 'cerrar'. – tchrist
@tchrist: Gracias. Nunca pensé que 'cerrar' puede fallar. – Tim