[PR]ÃÚËÞ”Ô‘g•\
¡–é‚̔ԑgÁª¯¸

Jan 02, 2008 (Wed)

/diary/monton

今日ã®ãƒ¢ãƒ³ãƒˆãƒ³

  • 今日ã¯ã€ãƒ¢ãƒ³ã¡ã‚ƒã‚“ãŒå®¶ã«æ¥ã¦ ã¡ã‚‡ã†ã©ï¼‘ヵ月ãŸã£ãŸè¨˜å¿µæ—¥ã€‚
  • 昨日ã®å¤œã€ãƒ¢ãƒ³ã‚’å¯ã‹ã—ã¤ã‘ã¦ãƒªãƒ“ングã§ãƒ†ãƒ¬ãƒ“を眺ã‚ã¦ã„ãŸã€‚ ã¾ã éŠã³è¶³ã‚Šãªã‹ã£ãŸã®ã‹ã€ãƒ€ã‚¤ãƒ‹ãƒ³ã‚°ã§ã€Œãƒ”ーピーã€è¨€ã£ã¦ãŸã‘ã©ã€ ã™ãã«é™ã‹ã«ãªã£ãŸã®ã§ã€è«¦ã‚ãŸãªã¨æ€ã£ã¦ãŸã€‚ ã—ã°ã‚‰ãã—ã¦ã€ã€Œãƒˆã‚³ãƒˆã‚³ãƒˆã‚³ã€ã¨ä½•ã‹èžã覚ãˆã®ã‚る軽ã„音ãŒèžã“ãˆãŸãªã€ã¨æ€ã£ã¦ãŸã‚‰ã€ ãŠå°»ã®å³å¾Œã‚辺り(絨毯ã«ç›´ã«åº§ã£ã¦ã„る)ã«ä½•ã‹æ°—é…を感ã˜ã¦æŒ¯ã‚Šè¿”ã£ãŸã‚‰ã€ ãã“ã‹ã‚‰ãƒ¢ãƒ³ãŒã“ã£ã¡ã‚’見上ã’ã¦ã„ãŸã€‚ã ã£ã“ã—ã¦ãƒ€ã‚¤ãƒ‹ãƒ³ã‚°ã«æˆ»ã£ã¦ã¿ã‚‹ã¨ã€ フェンスã®ç«¯ã«ï¼•センãƒã»ã©éš™é–“ãŒã‚ã£ã¦ã€ãã“ã‹ã‚‰è„±èµ°ã—ã¦ããŸã‚‰ã—ã„。 順調ã«ç”˜ãˆã£å­ã«æˆé•·ã—ã¦ã„る模様。
  • 今日ã¯ä¹…ã—ã¶ã‚Šã«é¢¨å‘‚ã«å…¥ã‚ŒãŸ (クリスマス・イブ以æ¥ï¼‰ã€‚ 今回ã¯ãƒ¢ãƒ³ãŒãƒã‚¹ãƒ»ã‚¿ãƒ–ã§è‡ªåˆ†ã§ç«‹ã¦ã‚‹ãらã„ã«æ¹¯ã‚’æµ…ãå¼µã£ã¦å…¥ã‚Œã¦ã¿ã‚‹ã€‚ 自分ã§å‹•ã‘ã‚‹ã®ã§å¤šå°‘ã¯ææ€–ãŒæ¸›ã£ãŸã‚ˆã†ã ã€‚「ピーピーã€è¨€ã„出ã™å‰ã«åˆ‡ã‚Šä¸Šã’る。 (ã“ã®æ™‚ã®å†™çœŸã¯ã“ã“。)
    • 2/3/2008: ä¹…ã—ã¶ã‚Šã®ãŠé¢¨å‘‚。
  • 今日ã®å†™çœŸã€ãã®ã‚¯ãƒªã‚¹ãƒžã‚¹ãƒ»ã‚¤ãƒ– ã®é¢¨å‘‚上り姿。

    (2007/12/24)
    • 7/27/2008: 昔ã¯ãれã„ãªä¸‰æ¯›çЬã ã£ãŸã®ãŒâ€¦â€¦ã€‚
perm link - Posted at 00:02 | comment (0)
/diary/blog

ブログã®ã¯ã¦ãªç§»è¡Œ

  • 昨日ã¯ã˜ã‚ãŸãƒ–ログéŠã³ã€ 予定通りスクリプトを書ã上ã’㟠(ã¨ã„ã†ã‹ã€ diary2blosxom.pl ã‚’ãƒãƒ§ã‚³ãƒãƒ§ã‚³ã¨ä¿®æ­£ã—ãŸã ã‘)。 色々考ãˆãŸã‘ã©ã€çµå±€ã€ä¸€ç•ªå˜ç´”ãªã‚¢ãƒ—ローãƒã€ ã¤ã¾ã‚Š ul ã® top level 毎ã«åˆ‡ã‚Šåˆ†ã‘ã‚‹ã ã‘ï¼ˆæ·±ã„æ‰€ã« anchor tag を振ã£ã¦ã„ã‚‹ã‚‚ã®ã¯ã€ ãã®ã¾ã¾è¦‹ãªã„ãµã‚Šï¼‰ã€‚ ã¯ã¦ãƒ€ãƒ© ã‚’ãã®ã¾ã¾ä½¿ãˆã‚‹ã‚ˆã†ã«ã™ã‚‹ãŸã‚ã€è¨˜äº‹æ¯Žã®åˆ‡ã‚Šå‡ºã—ã‹ã‚‰æ—¥ä»˜æ¯Žã®åˆ‡ã‚Šå‡ºã—ã«ä¿®æ­£ã€‚ スクリプトã®åå‰ã¯ diary2hw.pl ã«ã—ãŸã€‚ 一応ã€ãƒ–ログã¨ã—ã¦è¦‹ã‚Œã‚‹ã¨ã“ã‚ã¾ã§ã¯å‡ºæ¥ãŸã€‚(調å­ã«ã®ã£ã¦2004å¹´ã¾ã§é¡ã£ã¦ãŠã„ãŸã®ã§ã€ æ—¢ã«ï¼‘ï¼ï¼ï¼æ—¥ã‚’è¶ŠãˆãŸã‚‰ã—ã„。)
  • ç¾æ™‚点ã®å•題点:
    • 耳タコã ã‚ã†ã‘ã©ã€ local rule ã«å¾“ã†ã®ã¯ï¼ˆç¿’得時間的ã«ã‚‚)ã¤ã‚‰ã„ã®ã§ã€ 「ã¯ã¦ãªè¨˜æ³•ã€ã¯ã€Œè¦‹å‡ºã—ã€ã®ã¿ã§ååˆ†ã¨æ€ã£ã¦ã„ã‚‹ã®ã ãŒã€ 「åå‰ä»˜ãã€ã¨ã€Œã‚«ãƒ†ã‚´ãƒªãƒ¼ã€ã¯ä¸¡ç«‹ã—ãªã„ã®ã‹ï¼Ÿ ã‚ã¨ã€åå‰ã« "-" ãŒä½¿ãˆãªã„ã¨ã„ã†ã®ã¯ã€ä½•ã¨ã‹ãªãªã‚‰ã‚“ã®ã‹ãªã。 ã‚ã‚Œã€æ•°å­—もダメã‹ï¼Ÿ
    • 検索ã—ãŸã‚‰è¦æœ›ã¯ ã¯ã‚‹ã‹æ˜”ã«å‡ºã¦ã„るらã—ã„ã€‚æŠ€è¡“çš„ã«æ ¹æœ¬çš„ãªå›°é›£ãŒã‚ã‚‹ã¨ã‚‚æ€ãˆãªã„ãŒâ€¦â€¦
  • 付記(1/7/2008): 何ã‹ä»Šã¿ãŸã‚‰ã€ã€Œ*name*[category]headerã€ã¨æ›¸ã‘ã°ã€ åå‰ä»˜ãã§ã‚«ãƒ†ã‚´ãƒªãƒ¼åˆ†ã‘ã•れãŸã‚¨ãƒ³ãƒˆãƒªãƒ¼ã«ãªã£ã¦ã„る模様。 script ã‚’ãã®ã‚ˆã†ã«å¤‰æ›´ã—ãŸã€‚(ã“れã£ã¦ã€å‰ã‹ã‚‰æ©Ÿèƒ½ã—ã¦ã„ãŸã‚“ã ã£ã‘?) ãƒã‚¤ãƒ•ンã¯ä¾ç„¶ãƒ€ãƒ¡ãªæ¨¡æ§˜ã€‚
  • 2/10/2008: 空ã®ã‚«ãƒ†ã‚´ãƒªãƒ¼ã¯æ¶ˆåŽ»ã•れãªã„ã®ã‹ï¼Ÿ
  • 7/8/2008: ä¾ç„¶ã€ãªã‚“ã¨ã‹ãªã‚‰ã‚“ã®ã‹ã¨æ€ã„ãªãŒã‚‰ã€åŠåˆ†ã‚ãらã‚ãªãŒã‚‰ã€‚
  • 7/12/2008: ã¡ã¨æ‚ªæˆ¦è‹¦é—˜ã€‚
  • 付記(7/13/2008): ã¯ã¦ãªã®ã‚¹ãƒ¼ãƒ‘ーpre記法(ã»ã‚“ã¨ã€ã—ã¤ã“ã„ãªï¼‰ã§ã‚³ãƒ¼ãƒ‰ã‚’載ã£ã‘ã‚‹ã®ã‚‚ã„ã„ã‹ãªã¨æ€ã„〠diary2hw.pl ã®ã‚³ãƒ¼ãƒ‰ã‚’ã“ã“ã«å¼µã‚Šä»˜ã‘ã¦ãŠã:
    >|perl|
    #!/usr/local/bin/perl
    # converter from my diary.shtml to hw, hatena diary writer
    # Copyright (C) 2004-2008 Kengo Ichiki <kengoichiki@yahoo.com>
    # $Id: diary2hw.pl,v 1.1 2008/01/02 20:52:28 ichiki Exp $
    use HTML::Parser;
    use Jcode;
    
    $topurl  = "http://d.hatena.ne.jp/kichiki";
    $oldurl  = "http://kichiki.hp.infoseek.co.jp/diary";
    $year_start = 1997;
    
    @list0 = ; # old blosxom entry files
    
    # globals for check_category_in_link
    $check_link_tag = '';
    $check_link_li = 0;
    $check_link_text = '';
    
    # check for command-line argument
    die "Usage: diary2blosxom.pl (HTML file)\n" unless @ARGV == 1;
    
    # get the command-line argument
    my $file = shift;
    my $path, $file0;
    
    if ($file =~ /^diary\d{4}\_\d{2}.shtml$/) {
        $path = '';
    }
    elsif ($file =~ /(.*\/)(diary\d{4}\_\d{2}.shtml)$/) {
        $path = $1;
        $file0 = $2;
    }
    else {
        print "Illeagal diary file!\n";
        exit;
    }
    #print "PATH = $path\n";
    
    # Create HTML Parser object
    my $p = HTML::Parser->new
        (api_version => 3,
         start_h => [\&start, "tagname,attr"],
         text_h  => [\&text,  "dtext"],
         end_h   => [\&end,   "tagname"],
         );
    
    die "File $file does't exist.\n" unless -e $file;
    open (HTML, "< $file") or die "Cannot open $file";
    
    $h1flag  = 0; # h1 tag
    $h2flag  = 0; # h2 tag
    $preflag = 0; # pre tag
    $nsaflag = 0; # not-shown anchor tag flag -- local copy, no-href tags
    $ullevel = 0; # ul level
    
    $year  = 0;
    $month = 0;
    $day   = 0;
    $num   = 1;
    
    $name  = "";
    $title = "";
    $body  = "";
    
    $daybody = "";
    
    while (<HTML>) {
        # convert input-line into utf8
      Jcode::convert ( \$_, "utf8");
        $p->parse($_);
    }
    close (HTML);
    
    foreach $file (@list0) {
        print "removed: $file\n";
        unlink ($file);
    }
    
    exit;
    
    
    sub start
    {
        my ($tagname, $attr) = @_;
        my $i;
        my $a, $c, $tmptag;
    
        # h1 tag
        if ($tagname eq "h1") {
    	$h1flag = 1;
        }
    
        # h2 tag
        elsif ($tagname eq "h2") {
    	$h2flag = 1;
        }
    
        # a tag
        elsif ($tagname eq "a") {
    	if ($ullevel == 0 && $h2flag == 1) {
    	    $_ = $attr->{id};
    	    if (/d(\d+)/) {
    		$day = $1;
    		$num   = 1; # reset counter
    	    }
    	}
    
    	if ($ullevel == 1 && $attr->{id} ne "") {
    	    $_ = $attr->{id};
    	    if (/d(\d+)-(.+)/) {
    		my $subday  = $1;
    		if ($subday != $day) {
    		    print "WRONG!! id= ",$attr->{id},"\n";
    		}
    		$name = $2;
    	    }
    	}
    
    	if ($ullevel >= 1) {
    	    if ($attr->{href} eq "") {
    		# do nothing
    		$nsaflag = 1;
    	    }
    	    else {
    		$_ = $attr->{href};
    		$_ =~ s/^images\/AMAZON/http:\/\/images.amazon.com\/images\/P/;
    		$_ =~ s/^theorems.shtml/http:\/\/kichiki.hp.infoseek.co.jp\/diary\/theorems.shtml/;
    		$_ =~ s/^summaries.shtml/http:\/\/kichiki.hp.infoseek.co.jp\/diary\/summaries.shtml/;
    		$_ =~ s/^images\//http:\/\/kichiki.hp.infoseek.co.jp\/diary\/images\//;
    		if (/^\#d(\d+)-(.+)$/) {
    		    if ($year >= $year_start) {
    			$_ = sprintf ("$topurl/%4d%02d%02d/%s",
    				      $year, $month, $1, $2);
    		    } else {
    			$_ = sprintf ("$oldurl/diary%4d_%02d.shtml\#d%d-%s",
    				      $year, $month, $1, $2);
    		    }
    		} elsif (/^diary(\d{4})\_(\d{2}).shtml$/) {
    		    if ($1 >= $year_start) {
    			$_ = sprintf ("$topurl/archive/%4d%02d", $1, $2);
    		    } else {
    			$_ = sprintf ("$oldurl/diary%4d_%02d.shtml", $1, $2);
    		    }
    		} elsif (/^diary(\d{4})\_(\d{2}).shtml\#d(\d+)$/) {
    		    if ($1 >= $year_start) {
    			$_ = sprintf ("$topurl/%4d%02d%02d", $1, $2, $3);
    		    } else {
    			$_ = sprintf ("$oldurl/diary%4d_%02d.shtml\#d%d",
    				      $1, $2, $3);
    		    }
    		} elsif (/^diary(\d{4})\_(\d{2}).shtml\#d(\d+)-(.+)$/) {
    		    if ($1 >= $year_start) {
    			$_ = sprintf ("$topurl/%4d%02d%02d/%s",
    				      $1, $2, $3, $4);
    		    } else {
    			$_ = sprintf ("$oldurl/diary%4d_%02d.shtml\#d%d-%s",
    				      $1, $2, $3, $4);
    		    }
    		}
    
    		if ($_ eq "") {
    		    # do nothing
    		    $nsaflag = 1;
    		}
    		elsif (/^LOCAL\//) {
    		    # do nothing
    		    $nsaflag = 1;
    		}
    		else {
    		    $nsaflag = 0; # to show (for sure)
    		    if ($ullevel == 1) {
    			$title .= "<a href=\"$_\">";
    		    }
    		    else {
    			$body .= "<a href=\"$_\">";
    		    }
    		}
    	    }
    	}
        }
    
        # ul tag
        elsif ($tagname eq "ul") {
    	if ($ullevel >= 1) {
    	    #$body .= "\n";
    	    for ($i = 1; $i < $ullevel; $i ++) {
    		$body .= " ";
    	    }
    	    $body .= "<ul>\n";
    	}
    
    	$ullevel ++;
        }
    
        # li tag
        elsif ($tagname eq "li") {
    	if ($ullevel == 1) {
    	    # start of the entry
    	    $name  = "";
    	    $title = "";
    	    $body  = "";
    	}
    	elsif ($ullevel > 1) {
    	    for ($i = 2; $i < $ullevel; $i ++) {
    		$body .= " ";
    	    }
    	    $body .= "<li>\n";
    	}
        }
    
        # pre tag
        elsif ($tagname eq "pre") {
    	$preflag = 1;
    	if ($ullevel == 1) {
    	    $title .= "<pre>";
    	}
    	elsif ($ullevel > 1) {
    	    $body .= "<pre>";
    	}
        }
    
        # other tags
        else {
    	if ($ullevel >= 1) {
    	    $tmptag = "<$tagname";
    	    while (($a, $c) = each (%{$attr})) {
    		# for amazon images
    		if (($tagname eq "img")
    		    and ($a eq "src")) {
    		    if ($c =~ /^images\/AMAZON/) {
    			$c =~ s/^images\/AMAZON/http:\/\/images.amazon.com\/images\/P/;
    		    }
    		    elsif ($c =~ /^images/) {
    			$c =~ s/^images\//http:\/\/kichiki.hp.infoseek.co.jp\/diary\/images\//;
    		    }
    		}
    
    		if ($a ne "/") {
    		    $tmptag .= " $a=\"$c\"";
    		}
    	    }
    	    if (($tagname eq "img")
    		or ($tagname eq "hr")
    		or ($tagname eq "br")) {
    		$tmptag .= " />";
    	    }
    	    else {
    		$tmptag .= ">";
    	    }
    
    	    if ($ullevel == 1) {
    		$title .= $tmptag;
    	    }
    	    else {
    		$body .= $tmptag;
    	    }
    	}
        }
    }
    
    sub text
    {
        my ($dtext) = shift;
    
        $dtext =~ s/&/&/g;
        if ($preflag != 1) {
    	$dtext =~ s/ +/ /g;
    	$dtext =~ s/^\n//g;
        }
    #    else {
    #	$dtext =~ s/</</g;
    #	$dtext =~ s/>/>/g;
    #	$dtext =~ s/"/"/g;
    #    }
    
        if ($h1flag == 1) {
    	#print "dtext = $dtext\n";
    	$_ = $dtext;
    	if (/(\d+)年(\d+)月/) {
    	    $year  = $1;
    	    $month = $2;
    	    #print "year = $year\nmonth = $month\n";
    
    	    @list0 = getentries (".", $year, $month);
    	}
        }
    
        if ($preflag == 1) {
    	$dtext =~ s/\*\*\*/***/g;
    	$dtext =~ s/\-\-\-/ーーー/g;
    	$dtext =~ s/\+/+/g;
        }
    
        if ($nsaflag == 0) {
    	if ($ullevel == 1) {
    	    $title .= $dtext;
    	}
    	elsif ($ullevel > 1) {
    	    $body .= $dtext;
    	}
        }
    }
    
    sub end
    {
        my ($tagname) = shift;
        my $i;
        my $blosxomfile;
        my $localtitle;
    
        # h1 tag
        if ($tagname eq "h1") {
    	$h1flag = 0;
        }
    
        # h2 tag
        elsif ($tagname eq "h2") {
    	$h2flag = 0;
        }
    
        # ul tag
        elsif ($tagname eq "ul") {
    	$ullevel --;
    	if ($ullevel >= 1) {
    	    #$body .= "\n";
    	    for ($i = 1; $i < $ullevel; $i ++) {
    		$body .= " ";
    	    }
    	    $body .= "</ul>\n";
    	} else {
    	    # end of the day
    	    my $dayfile = sprintf ("%4d-%02d-%02d",
    				   $year, $month, $day);
    	    print_day_entry ($dayfile,
    			     $daybody, $year, $month, $day);
    	    # for sure
    	    $daybody = "";
    	}
        }
    
        # a tag
        elsif ($tagname eq "a") {
    	if ($ullevel >= 1 && $nsaflag == 0) {
    	    if ($ullevel == 1) {
    		$title .= "</a>";
    	    }
    	    elsif ($ullevel > 1) {
    		$body .= "</a>";
    	    }
    	}
    	else {
    	    $nsaflag = 0;
    	}
        }
    
        # li tag
        elsif ($tagname eq "li") {
    	if ($ullevel == 1) {
    	    $blosxomfile = sprintf ("%4d-%02d-%02d-%02d",
    				    $year, $month, $day, $num);
    
    	    # end of the entry
    	    #print_entry ($blosxomfile,
    	    #		 $name, $title, $body,
    	    #		 $year, $month, $day, $num);
    	    if ($name ne "") {
    		$daybody .= "*$name*$title\n";
    	    } else {
    		$daybody .= "*$title\n";
    	    }
    	    # cut extra space in front of [] if exist
    	    $daybody =~ s/\*( +)\[/\*\[/;
    	    $daybody .= "$body\n";
    
    	    # for sure
    	    $num ++;
    	    $name  = "";
    	    $title = "";
    	    $body  = "";
    	}
    	elsif ($ullevel > 1) {
    	    #$body .= "\n";
    	    for ($i = 1; $i < $ullevel; $i ++) {
    		$body .= " ";
    	    }
    	    $body .= "</li>\n";
    	}
        }
    
        # pre tag
        elsif ($tagname eq "pre") {
    	$preflag = 0;
    	if ($ullevel == 1) {
    	    $title .= "</pre>";
    	}
    	elsif ($ullevel > 1) {
    	    $body .= "</pre>";
    	}
        }
    
        # other tags
        else {
    	if ($ullevel >= 1) {
    	    if ($ullevel == 1) {
    		$title .= "</$tagname>";
    	    }
    	    else {
    		$body .= "</$tagname>";
    	    }
    	}
        }
    }
    
    sub print_day_entry {
        my ($f, # file
    	$b, # body
    	$y, # year (4 digits)
    	$m, # month (1 - 12)
    	$d, # day   (1 - 31)
    	) = @_;
    
        my @txtmon = ("Jan", "Feb", "Mar", "Apr", "May", "Jun",
    		  "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "13");
        my $filename = '';
    
        $t =~ s/\n//g;
        $t =~ s/^ +//g;
        $t =~ s/ +$//g;
        $t =~ s/  / /g;
        $t =~ s/\Q\E//g;
        if ($t eq "") {
    	$t = "-";
        }
    
        $b =~ s/\Q\E//g;
    
        $filename = "./$f.txt";
    
        open (FH, "> tmp.txt");
        print (FH "\n");
        print (FH "$b\n");
        close (FH);
    
        my $flag_match = 0;
        my $count = 0;
        foreach my $file (@list0) {
    	if ($file eq $filename) {
    	    $flag_match = 1;
    	    if (!compare_files ("tmp.txt", $file)) {
    		# modified
    		print ("updated: $filename\n");
    		rename ("tmp.txt", $filename);
    	    }
    	    else {
    		# same
    		unlink ("tmp.txt");
    	    }
    	    # remove the file from @list0
    	    splice (@list0, $count, 1);
    
    	    return;
    	}
    	$count ++;
        }
    
        if ($flag_match == 0) {
    	# new entry
    	print ("new:     $filename\n");
    	rename ("tmp.txt", $filename);
        }
    }
    
    
    # "getfiles" is borrowed from
    # Blosxom Plugin: recentwritebacks_tree
    # Author(s): typester <typester@unknownplace.org>
    # Version: 1.0
    # Blosxom Home/Docs/Licensing: http://www.blosxom.com/
    sub getfiles {
        my $dir = $_[0];
        my @files = ;
        my @ret = ;
    
        $dir .= "/" if ($dir =~ /[^\/]$/);
        if (opendir (DIR, $dir)) {
    	@files = readdir (DIR);
    	closedir (DIR);
        }
    
        foreach my $file (@files) {
    	next if ($file eq '.' or $file eq '..');
    	if (-d "$dir$file" and $file ne '') {
    	    my @subdir = &getfiles("$dir$file");
    	    @ret = (@ret, @subdir);
    	}
    	else {
    	    push (@ret, "$dir$file");
    	}
        }
    
        return @ret;
    }
    
    sub getentries {
        my ($dir, $year, $month) = @_;
        my @ret = ;
    
        my @files = getfiles ($dir);
        my $str_ym = sprintf ("%4d-%02d", $year, $month);
    
        foreach my $file (@files) {
    	if ($file =~ /$str_ym.+\.txt/) {
    	    push (@ret, "$file");
    	}
        }
    
        return @ret;
    }
    
    # return true when two files are same
    sub compare_files {
        my ($f1, $f2) = @_;
        my $l1 = '';
        my $l2 = '';
        my $ret = 1; # true
    
        my $s1 = -s $f1;
        my $s2 = -s $f2;
        if ($s1 != $s2) {
    	$ret = 0; # false
        }
        else {
    	open (F1, "< $f1");
    	open (F2, "< $f2");
    
          COMPARE: while ($l1 = <F1> and
    		      $l2 = <F2>) {
    	  if ($l1 ne $l2) {
    	      $ret = 0; # false
    	      last COMPARE;
    	  }
          }
    	close (F1);
    	close (F2);
        }
    
        return $ret;
    }
    
    
    # check link
    sub check_link_start
    {
        my ($tagname, $attr) = @_;
        # $check_link_li and $check_link_tag are global.
    
        # a tag
        if ($tagname eq "a") {
    	if ($attr->{id} eq $check_link_tag) {
    	    $check_link_li = 1;
    	}
        }
    }
    
    sub check_link_text
    {
        my ($dtext) = shift;
        # $check_link_li and $check_link_text are global.
    
        $dtext =~ s/&/&/g;
        $dtext =~ s/ +/ /g;
        $dtext =~ s/^\n//g;
    
        if ($check_link_li == 1) {
    	$check_link_text .= $dtext;
        }
    }
    
    sub check_link_end
    {
        my ($tagname) = shift;
        # $check_link_li is global.
    
        # li tag
        if ($tagname eq "li" and $check_link_li == 1) {
    	$check_link_li = 0;
        }
    }
    ||<
      
    cf. 7/12/2008: ã¯ã¦ãªã®åå‰ä»˜ãã‚¿ã‚°ã®ä»¶ã€‚
perm link - Posted at 00:01 | comment (0)