[Tech] Indice dei file html

Franco Bagnoli franco.bagnoli@unifi.it
Gio 3 Ott 2002 07:55:17 CEST


On Wed, 2 Oct 2002, Leonardo Boselli wrote:

> Vorrei sapere se esite uno script che dato in input un file html mi 
> prenda tutti i tag
> <Hn>BlaBla</Hn>
> in output mi dia
> <Hn><a href 
> "nome_delfile_in_cui_lo_ho_trovato#BlaBla">BlaBla</Hn>
> 
> (o meglio col comando 'indicizza file1.html file2.html file3.html > 
> index.html' abbreviabile, se la sequenza è giusta in 'indicizza 
> file?.html > index.html')
> 
[snip]
> oppure possiamo fare un torneo di scripting ... chi fa quello più 
> carino vince una bevuta .... 


Ecco il mio contributo

#!/usr/bin/perl

use HTML::Parser;

my $p = new HTML::Parser ();

my $out=0;
my $filename="";
my $string = "";

$p->handler(text, sub{$string .= shift if $out}, 'text');
$p->handler(start, sub{$out = 1 if $_[0] =~ /H1/i},  'tagname');
$p->handler(
  end, 
  sub{
    if ($_[0] =~ /H1/i) {
      $out = 0;
      print "<H1><a href=\"$filename#$string\">$string</H1>\n"; 
      $string="";
    }
  },
  'tagname'
);

while ($filename=shift){
  $p->parse_file($filename);
}


anche se  non è nelle 4 righe standard delle competizioni. 
Secondo me devi filtrare $string prima di stamparla come referenza (#string), e poi non ho capito che te ne fai se nel file sorgente non hai un <a name="..">, comunque aspetto la bevuta. 



-- 
Franco Bagnoli (franchino) <franco.bagnoli@unifi.it> (bagnoli@dma.unifi.it)
virtual location: Dipartimento di Energetica "S. Stecco"
real location: Dip. Matematica Applicata "G. Sansone", Universita' Firenze,
Via S. Marta, 3 I-50139 Firenze, Italy. Tel. +39 0554796422, fax: +39 055471787
GPG Key fingerprint = 169D 9EA5 8FD3 7EDA E43A  9830 255F BCEC 0D63 3728




Maggiori informazioni sulla lista flug-tech