Perl

WindowsのStrawberry Perlで最新のSQLiteを使う

SQLiteで新しいバージョンを使いたくなった。CPANで入れてみても9か月前のバージョンしか入らない。 cpanm -n DBD::SQLite perl -MDBD::SQLite -e "print $DBD::SQLite::sqlite_version" # 3.10.2 インターフェイスをどうこうする必要はないのでSQLiteのソー…

Strawberry Perl 5.22.1.3 (32bit)でText::Mecabをインストールできない

ポータブル版でWin-Rからportableshell.batを開き、cpanm --notest --interactive Text::MeCab((cpanmでビルドする場合mecab-configのないWindowsでは--interactiveが必要。)) するとエラーになる。ビルドログには以下のメッセージ。 g++.exe -o blib\arch\a…

HTTPS通信の読み込みエラー

Strawberry Perlのv5.20.2.1 (Net::HTTP 6.07)でHTTPSでGETを行うとたまにエラーになる。 Status read failed: ブロック不可のソケット操作をすぐに完了できませんでした。 at /path/to/strawberry/perl/vendor/lib/Net/HTTP/Methods.pm line 276. とdieして…

UUIDの生成

今回欲しいのはバージョン4 (ランダム)なので Data::UUID::MT を使う。名前の通りメルセンヌ・ツイスターを使っているようだ。 use Data::UUID::MT; say Data::UUID::MT->new->create_string; # xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx Data::UUID という古参…

DBIx::Customのwhere節

bindするデータタイプを指定したくてDBIx::Simple 1.35からDBIx::Custom 0.3に移行したのだが、where節に単純な条件しか指定できないことに気づいた。 $where{field_a} = [ undef, { '!=' => $value }, ]; を渡すと、 field_a is null or field_a != ? では…

Perlbrewでperl-5.19.8のインストールが失敗する (CentOS 6)

~/perl5/perlbrew/build.perl-5.19.8.log のログを見てみると # Failed test '[unix] syslog() called with level 'info' (macro)' # at t/syslog.t line 186. # got: 'Wide character in syswrite at ../../lib/Sys/Syslog.pm line 544. # ' # expected: ''…

Text::MeCabとUTF-8

UTF-8 でセットアップした MeCab を Text::Mecab から使ってみたが、feature のマッチがうまくいかない。 調べてみると、文字列に utf8 フラグが立っていなかった。MeCab 自体のエンコーディングがいろいろだから、ネイティブ文字列に変換するよりもオクテッ…

WindowsでText::MeCabを使う

インストール時に聞かれるコンパイルオプションはプロンプトに出るサンプルのパスを変えるだけでよい。 いざ使おうとするとエラーになる。 Can't load 'path/to/perl/site/lib/auto/Text/MeCab/MeCab.dll' for module Text::MeCab: load_file:指定されたモジ…

Strawberry Perl 5.12.3でHTTP::Message 6.02がUTF-8を受け付けない

以下のようなコードでエラーが出る。 use HTTP::Message; my $m = HTTP::Message->new; $m->content("\x{1f603}"); HTTP::Message content must be bytes at - line 3 Unicode文字列は渡せないそうだ。 内部で呼んでいるutf8::downgradeは、perldocによると…