HNS to fdus converter

いつか再利用するかもしれないのでメモ。日記システムのログコンバーターです。

#!/usr/bin/perl
#2007/9/9
#hns2fdus.
#This Program converts HNS to fdus format.

$dbg = 0;

while(<*.hnf>){

    $name = $oname = $_;
    $name =~ s/^d//;
    $name =~ s/hnf/hd/;

    if($dbg){print "$oname $name\n";}

    open(FILE,"$oname");

    $flg_new = 0;

    $out_line = "";

    while(<FILE>){

	$line = $_;

	next if($line =~ /^OK/);

	$line =~ s/^UL/<ul>/;
	$line =~ s/^\/UL/<\/ul>/;
	$line =~ s/^PRE/<pre>/;
	$line =~ s/^\/PRE/<\/pre>/;
	$line =~ s/^LI /<li>/;
	$line =~ s/^SUB (.*)/<h4>$1<\/h4>/;
	$line =~ s/~$/<br>/;
	$line =~ s/^NEW /:::/;
	$line =~ s/^URL (\S+)\s(.+)/<a href="$1">$2<\/a>/;
	$line =~ s/^LINK (\S+)\s(.+)/<a href="$1">$2<\/a>/;
	$line =~ s/^FN/\(/;
	$line =~ s/^\/FN/\)/;
	$line =~ s/^LNEW (\S+)\s(.+)/:::<a href="$1">$2<\/a>/;
	$line =~ s/^P$/<p>/;
	$line =~ s/^\/P$/<\/p>/;

	if($line =~ /^$/){
	    if(!$flg_new){
		if($dbg){ print "<p>\n";}
		$out_line .= sprintf "<p>\n";

		$flg_new = 1;
	    }
	    else{
		if($dbg){print "</p>\n";}
		$out_line .= sprintf "</p>\n";

		$flg_new = 0;
	    }
	}else{
	    if($dbg){print $line;}
	    $out_line .= sprintf $line;
	}
    }

    #pタグの閉じ忘れ防止
    if($flg_new){
	if($dbg){print "</p>\n";}
	$out_line .= sprintf "</p>\n";

	$flg_new = 0;
    }

    if($dbg){print "===========================\n";}
    close(FILE);

    #print "out_line=$out_line\n";

    open(FILE,">$name");

    print FILE $out_line;

    close(FILE);

    #exit;
}

This program is a log converter from HNS to fdus format.