シンタックスハイライト機能?

なんか、はてなダイアリーに「シンタックス・ハイライト」なる機能が追加されたらしい。
試しになんか貼ってみよう…と思ったけど、手頃なコードが無いな…
えーっと…
ずっと前に暇潰しに作ったスクリプトが出てきたので、そいつを貼ってみる。
(ちなみに、タイムスタンプを見たら1999年4月になってた。7年半前か…って、これ作ったのってそんな昔になるのかっ)

#!/usr/local/bin/perl

$file = "./test.dat";

$|=1;
print <<END;
Content-type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>DUMP LIST</TITLE>
</HEAD>
<BODY bgcolor="#000000" text="#ffffff">
<TT>
<FONT color="#00ff00">* FILE NAME = </FONT><FONT color="#00ffff">$file</FONT><BR>
---------------------------------------------------------------------------<BR>
<FONT color="#ffff00">
ADDRESS: +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f | 0123456789ABCDEF<BR>
</FONT>
END

&body;

print <<END;
</TT>
</BODY>
</HTML>
END

sub body {
	open (DATA, $file);
	binmode (DATA);
	$address = 0;
	while (read (DATA, $data, 16)) {
		$len = (length($data));
		$data .= "\x00"x (16-$len) if ($len < 16);
		$raw = $data;
		$raw =~ s/[^ -~]/./g;
		$line = join (" ", unpack ("H2" x 16, $data));
		$raw =~ s/&/&amp\;/g;
		$raw =~ s/</&lt\;/g;
		$raw =~ s/>/&gt\;/g;
		printf "<FONT color=\"ff00ff\">%06x</FONT> : %s <FONT color=\"00ff00\">|</FONT><FONT color=\"#00ffff\"> %s  </FONT><BR>\n", $address, $line, $raw;
		$address += 16;
		print "<FONT color=\"#ffff00\">ADDRESS: +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f | 0123456789ABCDEF</FONT><BR>\n" unless ($address%256);
	}
	close (DATA);
}

なるほど。
ソースコードをよく貼る人には便利かもしれない。
<|?|と書くと言語の種類を自動認識してくれるんですね。


なんか、一部のテーマでは長い行が枠からはみ出ちゃいますね。
いま試してるテーマ(Hatena_sky)でははみ出てないけど。
対応してないやつだとかなり見苦しい。
そういうテーマを使いたい場合はスタイルシートいじらなきゃダメかな。。。