#!/usr/bin/perl $title = $ARGV[0]; $dir = "src"; $template_path = "$dir/template.html"; $list_path = "$dir/menu.list"; #------------------------------------------# opendir(DIR, $dir) or die(); foreach $fn_src (readdir(DIR)){ next unless($fn_src =~ /(.+)\.src$/i); my $fn_html = $1; $fn_src = "$dir/$fn_src"; my $content = read_file($fn_src); my $menu = create_menu($fn_html); my $last_modified = last_modified($fn_src); open OUT, ">$fn_html"; print OUT apply_template(\$content, \$menu, \$last_modified); close OUT; } closedir(DIR); sub read_file { my $ret; open IN, $_[0]; $ret .= $_ while(); close IN; return $ret; } sub create_menu { my $ret; open ML, $list_path; for(;;){ my $title = ; my $fn = ; chomp($title); chomp($fn); if($title =~ /^>(.+)/){ $title = $1; if($_[0] eq $fn){ $ret .= "
  • $title
  • \n"; } else { $ret .= "
  • $title
  • \n"; } } else { if($_[0] eq $fn){ $ret .= "
  • $title
  • \n"; } else { $ret .= "
  • $title
  • \n"; } } $_ = ; if(/^\+/){ next;} elsif (/^-/) {$ret .= "
    \n";} else {last;} } return $ret; } sub last_modified { my $ret; # die unless (-f $_[0]); my ($mtime) = (stat($_[0]))[9]; my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($mtime); $ret = sprintf("%04d/%02d/%02d %02d:%02d", $year + 1900, $mon + 1, $mday, $hour, $min); return $ret; } sub apply_template { my $content = ${$_[0]}; my $menu = ${$_[1]}; my $last_modified = ${$_[2]}; my $ret; open IN, $template_path; foreach(){ s/__TITLE__/$title/; s/__LAST_MODIFIED__/$last_modified/; s/__MENU__/$menu/; s/__CONTENT__/$content/; $ret .= $_; } return $ret; }