Lo que no sé es por qué guardas lo que te has bajado desde Internet a un fichero, para luego volver a abrirlo. E incluso podrías ir grabando los @pases a medida de que los vas encontrando, reduciendo un poco el código.
Para extraer parte de una cadena de caracteres, pues depende de si sabes qué es lo que quieres extraer y/o de dónde.
Si sabes exactamente la posición dentro de la cadena, pues debes usar
substr() o
split() o
unpack.
Si no sabes dónde es, puedes localizarlo con
index o
rindex o, más comúnmente, con una
expresión regular. El qué utilizar en cada momento, depende de cada circunstancia.
Tu programa se puede quedar en algo así:
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict; # Somos novatos y vamos a programar en Perl de forma estricta
use warnings; # ¡Perl! Avísame de todo lo raro que encuentres
use diagnostics; # Y con mucha información, por favor
use LWP::UserAgent; # Vamos a conectarnos como clientes HTTP
use HTTP::Request; # Haciendo peticiones HTTP, naturalmente
my $ID = LWP::UserAgent->new(); # Vamos a ser un navegador Firefox (!)
$ID-> agent ("Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5");
print "Escriba la url de la web...\n"; # Preguntamos al jefe dónde tenemos que mirar
my $url = <STDIN>;
chomp $url;
my $req = HTTP::Request->new(GET => $url);
my $response = $ID->request($req); # Hacemos una petición HTTP de tipo GET
my $content = $response->content();
die "PROBLEMAS: No he bajado nada: $response" if not $content;
my @pases; # Comienzo de la búsqueda de pases
open (AQ, ">pases.txt");
print "Buscando pases...\n";
for my $linea (split /[\r\n]+/, $content) { # Para todas las líneas bajadas
if ($linea =~ /:/) { # Si la línea contiene un ':'
print AQ $linea; # La guardamos en el fichero, para la posteridad
push @pases, $linea; # Y en @pases, para informar después
}
}
close (AQ);
print "Estos son tus pases...\n"; # Informamos
print @pases;
print "Pulsa Enter para terminar..."; <>;
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4