Necesito parsear un fichero de texto con formato SMS, la sintaxis es la utilizada por las "smstools", ejemplos en la página:
http://smstools.meinemullemaus.de/fileformat.html
Un ejemplo de un SMS sería:
From: 2004
From_SMSC: 34607003110
Sent: 07-05-28 14:37:30
Received: 07-05-28 14:37:39
Subject: GSM1
Alphabet: ISO
UDH: false
server-xx webrestart
Por lo que he visto en la sintaxis la forma de parsear el fichero podría ser:
1) Hasta encontrar una línea en blanco procesar los tokens.
2) Una vez encontrada la línea en blanco empieza el mensaje de texto.
La primera parte de procesar los tokens ya la tengo lista-.. me faltaría la parte de detectar la línea en blanco y dejar de procesar los tokens para empezar a almacenar el SMS en otra variable.
El código para extraer las variables sería:
Using perl Syntax Highlighting
open( FILE, "< GSM1.PWVZXW " ) or die "ERROR: $!";
while (<FILE>) {
# Ignoramos las líneas que son comentarios
next if /^\s*#/;
# Eliminar el caracter \n del final
chomp;
# Dividir la línea en variable y valor
($var, $value) = split(":", $_);
# Pasamos a mayúsculas el nombre de la variable
$var =~ tr/[a-z]/[A-Z]/;
# Si el valor empieza y acaba por comillas dobles las eliminamos
$value =~ s/^\"(.+)\"$/$1/;
# Metemos los datos en un array asociativo
$conf{$var} = $value;
}
close(FILE);
while (<FILE>) {
# Ignoramos las líneas que son comentarios
next if /^\s*#/;
# Eliminar el caracter \n del final
chomp;
# Dividir la línea en variable y valor
($var, $value) = split(":", $_);
# Pasamos a mayúsculas el nombre de la variable
$var =~ tr/[a-z]/[A-Z]/;
# Si el valor empieza y acaba por comillas dobles las eliminamos
$value =~ s/^\"(.+)\"$/$1/;
# Metemos los datos en un array asociativo
$conf{$var} = $value;
}
close(FILE);
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
¿Creéis que es correcta la forma de procesar el fichero? ¿Alguna pista para detectar la línea en blanco y dejar de procesar los tokens? Me interesa que el resto, quede guardado dentro de la variable "$conf{'SMS'}".
Si conocéis algún módulo para procesar este tipo de ficheros.. también es bienvenido
Saludos,