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";
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top