Bueno, yo usaría CGI para generar el código HTML, y sacaría la función doit() de dentro del bucle.
Using perl Syntax Highlighting
use CGI ':standard';
use File::Find;
use File::Basename;
use feature 'say';
@ARGV = qw(firewall routers) if not @ARGV;
for my $tipo (@ARGV) {
say Tr(td($tipo));
find( \&doit, $tipo );
}
sub doit {
my $fpath = $File::Find::name;
my $fname = basename($fpath);
if (m/\.html$/) {
say Tr(td(
a({-href => "http://localhost/$fpath"},
qq(<font color="#F3C035">$fname</font>
)
));
}
}
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Pero yo no usaría la etiqueta <font>, sino un estilo CSS. Y al código le falta todo el preámbulo para dibujar toda la estructura de un documento HTML (no sabemos si eso es lo que quieres al final).
Hay otros módulos para generar HTML, desde luego.