• Publicidad

Formas de abrir archivos

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Formas de abrir archivos

Notapor BigBear » 2011-06-20 13:37 @609

Es solo una duda básica, porque yo solo conozco esta forma de abrir un archivo y obtener todo su texto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open(FILE,"test.txt");
  2. my @wor = <FILE>;
  3. close FILE;
  4.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Pero mi duda es ¿qué otras formas de abrir archivos y hacer lo mismo, solo que en vez de guardar el resultado en un array lo guarde en una variable común?

¿ Alguien sabe a lo que me refiero ?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Formas de abrir archivos

Notapor explorer » 2011-06-20 13:50 @618

Bueno, en Perl se puede hacer de muchas formas. Yo solo te pongo unas pocas.

Puedes usar join() para unir todas las líneas:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open my $FILE, q[<], 'test.txt';
my $wor = join q[], <$FILE>;
close   $FILE;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Puedes indefinir la variable $/ (delimitador de los registros de entrada), y de esa manera se activa el modo 'slurp' (más información en perlvar).
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
undef $/;
open my $FILE, q[<], 'test.txt';
my $wor = <$FILE>;
close   $FILE;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Un modismo muy popular es hacer lo anterior, pero en una sola línea, lo cual aísla el cambio de $/ del resto del programa (no afectará al resto de open()):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $wor = do { local $/; open my $FILE, q[<], 'test.txt'; <$FILE> };
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Ni siquiera hace falta el close().

Hay módulos especializados, como File::Read o File::Slurp. Este último exporta una función, llamada 'slurp', que corresponde con la misma función que trae de base Perl v6. Este es el método que más uso.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron