Newsgroup: it.comp.lang.perl
Titolo: Come levare i link in una pagina html?

Salve a tutti
avrei un problema semplice ... ma complicato da risolvere
Devo sviluppare un parse che preso in input una pagina hmtl ne levi i 
link per evitare che l'utente finale possa accedere allepagine linkate.
Tutto il resto della pagina deve rimanere cosi' come e', solamente sostiuire
<A HREF="...>zzzz</A>  ===> zzzzz
Ringrazio anticipatamente per la collaborazione
Saluti LAGO

 <A HREF="...>zzzz</A>  ===> zzzzz
Ti serve il modulo Html::LinkExtor
http://search.cpan.org/~gaas/HTML-Parser-3.34/lib/HTML/LinkExtor.pm
che trovi nell'HTML::Parser
http://search.cpan.org/~gaas/HTML-Parser-3.34/
Usa CPAN, Luke! :)

Grazie per la veloce risposta
Avevo gia' visto questo modulo, ma mi sembra che funzioni solo per 
estrarre i link ; la mi ignoranza non mi permette di capire come posso 
"cancellarli" e lasciare il resto della pagina intatta.
Puoi darmi qualche indicazione maggiore ?
Grazie per l'aiuto
Saluti LAGO


 Puoi darmi qualche indicazione maggiore ?
Scusa, ho letto male :(
Da un post di Kevin Campbell, ho trovato:
while(<IN>){
   while(m@(<a.*?href\s*=\s*)(\"[^\"]*\"|[^\"]\S*)(.*?>.*?</a>)@ig){
     $links{$2}="$1$2$3";
   }
}
dunque in $2 hai il testo del tuo link e dunque ti basta sostituire $1 e 
$3 con la stringa vuota.

"cancellarli" e lasciare il resto della pagina intatta.
Come ho già detto qualche giorno fa, in risposta ad un altro analogo
messaggio, è senz'altro possibile costruire un'espressione di sostituzione
ad hoc, più o meno scaltra, da quella ingenua che fornivo io in quel
medesimo messaggio a quella più complessa che ti ha dato Andrea Maestrutti.
E probabilmente l'uno o l'altra funzioneranno, nella maggior parte dei casi.
Per avere qualcosa di veramente robusto che funzioni per ogni prevedibile
documento html, bisogna però rassegnarsi a fare un parsing completo del
documento. Per fare questo è conveniente usare uno dei tanti moduli
disponibili per html, piuttosto che riscriversi qualcosa dall'inizio. Tra i
più promettenti ci potrebbero essere HTML::Filter e HTML::Parser.
Questo nel caso teorico più generale. Nella pratica, tutto dipende dal grado
di affidabilità che ti serve raggiungere, e dalla eventuale conoscenza del
genere di documenti che verranno processati. Se puoi accettare che ogni
tanto qualcosa vada storto (e allora interverrai tu manualmente), o se sai a
priori che i documenti sono scritti in modo tale che l'espressione di
ricerca funzionerà sempre, non ha ovviamente senso complicarti la vita con
un parser completo.
Ciao.

Grazie a tutti per il supporto
Alla fine ho risolto il mio problema in questo modo
----------------------------------------------------------------------------------
#!/usr/bin/perl
     $result="";
     package MyParser;
     use base 'HTML::Parser';
     sub start {
        my($self, $tagname, $attr, $attrseq, $origtext) = @_;
        if (lc($tagname) ne "a")
        {$result=$result.$origtext."\n";}
     sub end {
         my($self, $tagname, $origtext) = @_;
	if (lc($tagname) ne "a") {$result=$result.$origtext."\n";}
         #...
     }
     sub text {
         my($self, $origtext, $is_cdata) = @_;
	$result=$result.$origtext."\n";
     }
  }
  my $p = MyParser->new;
  \
  $p->parse_file("pippo.html");
  print $result
----------------------------------------------------------------------------------
Il file pippo.html ha dei hyperlink <A> che viene parsato ed il risutato 
viene messo nella stringa Result
Ho fatto un po' di prove e il tutto sembra funzionare
Grazie di nuovo per il il supporto
Saluti LAGO
