goodict.cgi
ここしばらく、w3m から goo辞書をお手軽に利用する Local CGI である goodict.cgi が使えなくなっていたので、改造して使えるようにしてみた。
#!/usr/bin/perl # ~/.w3m/urimethodmap に追加する設定 # e: file:/cgi-bin/goodict.cgi?%s # w: file:/cgi-bin/goodict.cgi?%s # j: file:/cgi-bin/goodict.cgi?%s # a: file:/cgi-bin/goodict.cgi?%s # # URL に e:abc と指定すると abc を英和辞書で検索 # URL に w:1:あいう と指定すると「あいう」を和英辞書で一致検索 use Encode; $url = "http://dictionary.goo.ne.jp/"; $_ = $ENV{"QUERY_STRING"}; if ($_ =~ /^e:/) { $switch = "ej"; } elsif ($_ =~ /^w:/) { $switch = "je"; } elsif ($_ =~ /^j:/) { $switch = "jn"; } elsif ($_ =~ /^a:/) { $switch = "all"; } s@^[ewja]:@@ && s@^//@@ && s@/$@@; s/^([0-6])://; $mode=$1; if ($mode==""){ $mode="0"; } if ($_) { # 空白を書くのが面倒なので、Ctrl-L を書いたら空白に変換するようにする s/%0C/ /g; s/%([\da-f][\da-f])/pack('C', hex($1))/egi; $word=$_; # ターミナルが EUC-JP の場合 $_ = encode('utf-8', decode('euc-jp',$_)); s/[\000-\040\+:#?&%<>"\177-\377]/sprintf('%%%02X', unpack('C', $&))/eg; $url .= "srch/$switch/$_/m".$mode."u"; } print <<EOF; w3m-control: GOTO $url w3m-control: DELETE_PREVBUF w3m-control: SEARCH $word EOF