de archivos de lectura en la variable en Perl [duplicado]
-
28-09-2019 - |
Pregunta
Duplicar posibles:
¿Cuál es el mejor manera de sorber un archivo en una cadena en Perl?
¿Es este código una buena manera de leer el contenido de un archivo en una variable en Perl? Funciona, pero tengo curiosidad si hay una mejor práctica que debería usar.
open INPUT, "input.txt";
undef $/;
$content = <INPUT>;
close INPUT;
$/ = "\n";
Solución
Creo que la práctica común es algo como esto:
my $content;
open(my $fh, '<', $filename) or die "cannot open file $filename";
{
local $/;
$content = <$fh>;
}
close($fh);
El uso de 3 open
argumento es más seguro. El uso de identificador de archivo como variable es la forma en que se debe utilizar en Perl moderno y utilizando local $/
restaura valor inicial de $/
el final de la secuencia, en lugar de su \n
codificado.
Otros consejos
use File::Slurp;
my $content = read_file( 'input.txt' ) ;
Tenga en cuenta que si estás en un ambiente donde la instalación de los módulos es posible, es posible que desee utilizar IO::All
:
use IO::All;
my $contents;
io('file.txt') > $contents;
Algunas de las posibilidades se ponen un poco loco, pero también pueden ser muy útiles.