Lo primero, presentarme. Soy Aitor, un estudiante de Informática que por una asignatura he comenzado a estudiar Perl.
Mis conocimientos son mínimos y las dudas aparecen rápidamente.
Tras mucho buscar y no encontrar lo que buscaba, he decidido probar suerte en este foro.
Veréis, tengo que conseguir hacer en Perl, una nube de etiquetas, con las etiquetas que se cogen de un fichero xhtml, concretamente, el de menéame:
http://meneame.net/rss2.php
(no busco hacer publicidad, es para mostrar el esquema del fichero).
Desde este fichero, tengo que obtener los valores de etiquetas, es decir que cada noticia tiene unas etiquetas asociadas (debajo de cada noticia hay una línea escrita como "etiquetas: ".
Pues yo tengo que hacerme con esos valores, para después ordenarlos, medir su frecuencia y finalmente hacer un fichero html relacionando a cada etiqueta un tamaño de fuente en función de la frecuencia de apariciones. Una nube de tags al fin y al cabo.
Bueno, el caso es que con este código:
Using perl Syntax Highlighting
`more feed.xhtml | tr -s "</STRONG>" '\012' | tr -s "</P>" '\012' >archivo1`;
@texto = `cat archivo1`;
open F, ">fin";
foreach (@texto) {
$_ =~/^'\s:'/;
if($_=~/^:\s\w/ ){#: espacio y alfanumérico. Así tengo las etiquetas.
@texto = `cat archivo1`;
open F, ">fin";
foreach (@texto) {
$_ =~/^'\s:'/;
if($_=~/^:\s\w/ ){#: espacio y alfanumérico. Así tengo las etiquetas.
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
obtengo una serie de líneas de este estilo:
": etiqueta1,etiqueta2..." donde etiquetaX puede estar compuesta de varias palabras separadas con espacios o contener el caracter '%' por ejemplo.
Mi intención es quitar ':' y el espacio que le sigue, pero me es imposible.
He probado con s/, con tr/ y sus opciones, he probado de todo, y no lo he conseguido:
Using perl Syntax Highlighting
`more feed.xhtml | tr -s "</STRONG>" '\012' | tr -s "</P>" '\012' >archivo1`;
@texto = `cat archivo1`;
open F, ">fin";
foreach (@texto) {
$_ =~/^'\s:'/;
if($_=~/^:\s\w/ ){#: espacio y alfanumérico. Así tengo las etiquetas.
$_=~ tr/^:/ /;#Quito los : al inicio.
#$_=~ tr/^ / /; #Quitar el espacio del inicio??
#$_=~ tr-c-d /'\W'/'\b'/
#$_=~ tr -cd "[:blank:]" $_
#$_=~ tr -d /'\b'/ $_
#$_=~ tr/,/\n/;
$_=~ tr-d/[\s\s\w*]//
#$_=~ tr/^\s / /;#Quito el espacio del inicio.
#print "$_\n";
print F "$_";
}#if
#`more etiquetas`;
}#for
close F;
@texto = `cat archivo1`;
open F, ">fin";
foreach (@texto) {
$_ =~/^'\s:'/;
if($_=~/^:\s\w/ ){#: espacio y alfanumérico. Así tengo las etiquetas.
$_=~ tr/^:/ /;#Quito los : al inicio.
#$_=~ tr/^ / /; #Quitar el espacio del inicio??
#$_=~ tr-c-d /'\W'/'\b'/
#$_=~ tr -cd "[:blank:]" $_
#$_=~ tr -d /'\b'/ $_
#$_=~ tr/,/\n/;
$_=~ tr-d/[\s\s\w*]//
#$_=~ tr/^\s / /;#Quito el espacio del inicio.
#print "$_\n";
print F "$_";
}#if
#`more etiquetas`;
}#for
close F;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
¿Sabríais explicarme lo que hago mal y qué debo hacer para obtener la líneas de palabras tal cuál?
Gracias por vuestro tiempo y atención.
Recibid un cordial saludo, Aitor.