Bueno... vamos a ver... si el formato es el correcto, podemos dar una expresión regular que sea conforme a él, y de esa manera garantizar que cazará todos los registros (conformes al formato, claro).
Este programa
Using perl Syntax Highlighting
#!/usr/bin/env perl
# JF20140617
use v5.14;
use utf8;
use open IO => ':utf8';
use open ':std';
## Leer todo el archivo en una sola línea
my $archivo;
{
my @archivo = <DATA>;
chomp @archivo;
$archivo = join '', @archivo;
}
#say $archivo;
#say '-' x 50;
## Procesar los registros
my $rxString = qr/.*?/; # Una cadena de texto cualquiera
my $rxID = qr/\d{10,}/; # Tipo numérico entero, por lo general más grande que 1 000 000 000
my $rxTexto = qr/$rxString/; # tipo cadena de caracteres alfanuméricos
my $rxClasificación = qr/$rxString/; # Cadena de caracteres que identifica el tipo de tweet
my $rxUser = qr/$rxString/; # Cadena de caracteres con el nombre del usuario
my $rxTimeStamp = qr/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/; # Fecha y hora de ingreso al sistema del tweet
my $rxURL = qr/http.+?/; # Dirección donde está alojado el tweet
my $rxNúmero_del_tema = qr/\d{1,3}/; # Entero no superior a 1000
while ($archivo =~ /\((?<ID>$rxID),'(?<Texto>$rxTexto)','$rxClasificación','(?<User>$rxUser)','(?<TimeStamp>$rxTimeStamp)','$rxURL',$rxNúmero_del_tema\)/g) {
say '-' x 20;
say "\tID: $+{'ID'}";
say "\tTexto: [$+{'Texto'}]";
say "\tUser: [$+{'User'}]";
say "\tTimeStamp: $+{'TimeStamp'}";
}
## Ejemplo de archivo de entrada
__DATA__
(1024775407,'No es la apariencia, es la esencia. No es el dinero, es la educación. No es la ropa, es la clase.','Sin cl
asificar','DarihoA','2013-04-05 04:02:43','https://twitter.com/190033321/status/320023668631666688',339),(1024775406,')
RT @allendexxi: Bien la) aprobación de la acusación de (Beyer) pero no olvidamos ((q)) la Concertación también avaló el
lucro en la educación!)','Sin clasificar','Mar_c(i)aVargasS','2013-04-05 04:02:45','https://twitter.com/66868014/status
/320023679369113600',339)
Coloreado en 0.005 segundos, usando
GeSHi 1.0.8.4
genera esta salida:
Using text Syntax Highlighting
--------------------
ID: 1024775407
Texto: [No es la apariencia, es la esencia. No es el dinero, es la educación. No es la ropa, es la clase.]
User: [DarihoA]
TimeStamp: 2013-04-05 04:02:43
--------------------
ID: 1024775406
Texto: [)RT @allendexxi: Bien la) aprobación de la acusación de (Beyer) pero no olvidamos ((q)) la Concertación también avaló ellucro en la educación!)]
User: [Mar_c(i)aVargasS]
TimeStamp: 2013-04-05 04:02:45
Coloreado en 0.004 segundos, usando
GeSHi 1.0.8.4
La presencia de las comillas y de las comas, ayuda a localizar los campos de los registros. Un split() no sería posible, con este formato, así que hay que usar una expresión regular más compleja.