#!/usr/bin/perl #sakuraconv.pl (hina.txt -> headline sensor for Nanika) #Copyright 2001 SUGAI Kiyokaze #ver. 20010522.00 require 'jcode.pl'; local (@dtime, @durl, @dname, @dauthor, $printline); #get diary data local($linenum) = 0; while () { if (/HINA_OK/) { &jcode'convert(*_ , 'euc'); ($durl[$linenum], $dname[$linenum], $dauthor[$linenum]) = m#([^\<]+)\(([^\)]*)\)\#g ; ($dtime[$linenum]) = m#\<\!\-\-HINA_OK [0-9]{4}\/([0-9][0-9]\/[0-9][0-9] [0-9][0-9]\:[0-9][0-9]) \[[0-9]+\]\-\-\>#g ; $linenum++; } } #print list $linenum = 0; foreach (@durl) { $dauthor[$linenum] =~ s/^by//; $dauthor[$linenum] =~ s/¤µ¤ó$//; $durl[$linenum] =~ s/\?\d{8}$//; $dname[$linenum] =~ s/\]$//; $dname[$linenum] =~ s/^\[//; $dname[$linenum] = &stringlimit(32, $dname[$linenum]); $printline = "${dtime[$linenum]} ${dname[$linenum]}"; &jcode'convert(*printline , 'sjis'); print $printline . "\r\n"; $linenum++; } sub stringlimit { local($limitlen) = $_[0]; local($inputstr) = $_[1]; local($charboundary) = 0; local($outputstr); if ($limitlen < length($inputstr)) { $outputstr = substr($inputstr, 0, $limitlen); local(@str_chrcode) = unpack("C*", $outputstr); while (@str_chrcode) { if (shift(@str_chrcode) > 127) { $charboundary ^= 1; } } if ($charboundary) { $outputstr .= substr($inputstr, $limitlen, 1); } } else { $outputstr = $inputstr; } return($outputstr); }