WindowsでText::MeCabを使う

インストール時に聞かれるコンパイルオプションはプロンプトに出るサンプルのパスを変えるだけでよい。
いざ使おうとするとエラーになる。

Can't load 'path/to/perl/site/lib/auto/Text/MeCab/MeCab.dll' for module Text::MeCab: load_file:指定されたモジュールが見つかりません。 at path/to/perl/lib/XSLoader.pm line 68.

Dependency Walker で確認すると LIBMECAB.DLL が未解決*1。要は MeCab にパスが通っていないと駄目らしい。notest install しなかったらインストールも失敗していたのだろうか?
とはいえいちいちパスを通しておく気はないので、環境依存になるがソースレベルで解決してみる。

$ENV{PATH} .= ';path/to/MeCab/bin' if ($ENV{OS} =~ /^Win/);
require Text::MeCab;

use する場合は BEGIN ブロックに書けばいい。

BEGIN {
    $ENV{PATH} .= ';path/to/MeCab/bin' if ($ENV{OS} =~ /^Win/);
}
use Text::MeCab;

*1:あとで確認すると、ツールを使わないでも Perl で実行するだけで「コンポーネントが見つかりません。libmecab.dll が見つからなかったため〜」というダイアログが出た。前は出なかった気がするのだが。