[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