#!/usr/bin/perl # 東急の Web ページに掲載されている東急の時刻表*1 を、時刻表ビューア*2 # 等の時刻表データ形式 (TBL 形式) へ変換するためのスクリプト # # *1 http://www.tokyu.co.jp/train/rosen.html # *2 http://www.gcd.org/TimeTable/Welcome.ja.html # # 使い方の例: TokyuTbl.pl dt_wk_1_73.html > Azamino.tbl # (dt_wk_1_73.html は東急の時刻表ページを保存したファイル) $letter = -1; while (<>) { # タイトル if (/\
(\S+)\s+([^\<]+)\<\/pre\>/) { $symbol = $1; $note = $2; if ($symbol eq '無印') { $symbol = "-"; } elsif ($symbol =~ /^\202([\`a-y])$/) { $symbol = sprintf("%c",ord($1)-ord('`')+ord('A')); } else { $kanji = $symbol; $letter++; $symbol = sprintf("%c",ord('a') + $letter); $kanji =~ s/./sprintf("\\%03o",ord($&))/eg; $table =~ s/$kanji/$symbol/g; } print "$symbol:$note\n"; } elsif ($letter < 0) { s/\202([ O-X])/pack("a",ord($1)-ord('O'))/eg; if (/\(\d+)/) { $hour = $1; $table .= "\n$hour:"; } elsif (/^\([^\<]+)\
([^\<]+)\(\d+)/) { $note = "$1$2"; $min = $4; $note =~ s/\s+//g; $table .= " $note$min"; } } } print "\n#$title$table\n";