2011-12-23 15 views
5

Estoy tratando de crear un script que lea los archivos de texto y luego los analice, independientemente de si el archivo de texto está en línea o fuera de línea.Perl: leer el archivo de texto web y "abrirlo"

La parte sin conexión se realiza, utilizando

Ahora viene la parte en línea, de todos modos hay que leer un archivo de texto en una página web y luego "abrir" que?

Lo que espero lograr es la siguiente:

if ($offline) { 
    open(FILENAME, "anyfilename.txt") 
} 
elsif ($online) { 
    ##somehow open the http web text so that I can do a while (<FILENAME>) later 
} 

analyze_file(); 

sub analyze_file { 
    while (<FILENAME>) {analyze analyze} 
} 

Ahí está el "get ('http://weblink.com/textfile.txt;)" sino que crea una cadena. No puedo hacer un tiempo() con esa cadena.

¿Alguien sabe cómo se puede hacer esto?

Respuesta

11

Es simple, solo usa el estilo open FILEHANDLE,MODE,REFERENCE de open.

use LWP::Simple; 
if ($offline) { 
    open(FILENAME, '<', "anyfilename.txt") 
} 
elsif ($online) { 
    my $text = get 'http://example.com'; 
    open(FILENAME, '<', \$text); 
} 
+0

+1, esta es probablemente la forma correcta de hacerlo. Pero dependiendo de la ocasión, abrir un identificador de archivo a un escalar parece mucho para mí y simplemente usaría mi solución propuesta de dividir el escalar en una matriz de líneas. – sidyll

+0

@sidyll ¿Por qué sería demasiado abrir un identificador de archivo a un escalar? BradGilbert ¡Gracias! –

+0

@ Brad-Gilbert ¿Qué hace la barra oblicua en este contexto de \ $? Normalmente si anula lo que venga después. ¿Por qué funciona el código porque el $ en el texto está anulado? –

Cuestiones relacionadas