カテゴリー
perlモジュール

HTML::Feature のバグ user_agentの指定とnot_encodeオプション

HTMLから本文(らしき)部分を抜き出せるとっても便利なモジュール。
HTML::Feature 3.00 リリースしました - ダウンロードたけし(寅年)の日記

オプションを指定する場合にちょいとバグがあるので修正。
CPANのバグ報告とか分からないので(汗

PATHは環境によって違うかも知れません。

/usr/lib/perl5/site_perl/5.8.8/HTML/Feature.pm

sub _setup {
    my $self = shift;
    $self->front_parser( HTML::Feature::FrontParser->new( context => $self ) );
    $self->engine( HTML::Feature::Engine->new( context => $self ) );
    # if ( !$self->{not_encode} ) { # Bug!?
    if ( !$self->config->{not_encode} ) {
        $self->{enc_type} ||= "utf8";
    }
}

/usr/lib/perl5/site_perl/5.8.8/HTML/Feature/Fetcher.pm
sub _setup {
    my $self    = shift;
    my $c       = $self->context;
    my $fetcher = LWP::UserAgent->new;
    my $config  = $c->config;
    if ( $config->{user_agent} ) {
        # $fetcher->user_agent( $config->{user_agent} ); # Bug!!
        $fetcher->agent( $config->{user_agent} );
    }
カテゴリー
perlモジュール

CentOS5.5でText::Mecabをインストール

Text::Mecabがインストール出来なかった。
そういえば昔諦めた気がする。
で、エラー内容を見てみる。

# perl Makefile.PL
Path to mecab config? [/usr/local/bin/mecab-config] 
detected mecab version 0.98
Using compiler flags '-I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=98'...
Using linker flags '-L/usr/local/lib -lmecab -lstdc++'...

Text::MeCab needs to know what encoding you built your dictionary with
to properly execute tests.

Encoding of your mecab dictionary? (shift_jis, euc-jp, utf-8) [euc-jp] utf-8
Using utf-8 as your dictionary encoding
Detected the following mecab information:
   version: 0.98
   cflags: -I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=98 -I src
   libs: -L/usr/local/lib -lmecab -lstdc++
   include: /usr/local/include
/root/.cpanm/work/1294395897.25225/Text-MeCab-0.20011/assertlibeiKR8srG: error while loading shared libraries: libmecab.so.1: cannot open shared object file: No such file or directory
/root/.cpanm/work/1294395897.25225/Text-MeCab-0.20011/assertlibEejMJieF: error while loading shared libraries: libmecab.so.1: cannot open shared object file: No such file or directory
wrong result: 'mecab', 'mecab'

libmecab.so.1 が見つからないらしい。
/usr/local/lib/libmecab.so.1 にインストールされている。

CentOSの標準設定ではPATHが通っていないらしいので、/usr/local/lib/ 配下のライブラリが読み込まれない様子。

で、/etc/ld.so.conf あたりをいじる必要がある。

# vi /etc/ld.so.conf

/usr/local/lib    ←最終行に追記

ldconfigを実行して、ライブラリ読み込みパスを更新。

# ldconfig 

※pathが通っていない場合は /sbin/ldconfig

Text::Mecab のディレクトリへ移動して手動でインストール

perl Makefile.PL
make
make test
make install
カテゴリー
perlモジュール インストールメモ

CentOS5.5 ImageMagick インストール関連

ImageMagickのインストールはyumで管理するのが一番簡単。
ただし、CentOSのImageMagickはバージョンが古い(v6.2.8)

ImageMagickのperlモジュール(PerlMagick?)はCPANでインストールすると入らないので、yumでスコッといれる。

カテゴリー
perlモジュール

Crypt::RC4 で暗号化した時に改行コードが混じる場合がある点に注意

サクっと暗号化/復号化を使いたい時に便利なperlモジュール Crypt::RC4
このモジュールでとある文字列を暗号化すると改行コードが混じる場合がある。

例えば s2525 を暗号化する。

use Crypt::RC4;
my $secret_key='1234';
my $encrypted = Crypt::RC4->new($secret_key)->RC4('s2525');
print $encrypted;

実行結果
�{�
�

$encrypted をファイルに記録したりすると、改行コードがあるため意図しないところで改行されてしまったりする。

pack/unpackして使う場合が多いと思うけど、

$encrypted =~ s/(.)/unpack('H2', $1)/eg;

としても改行コードは残ったままなのでやはり注意が必要。

カテゴリー
perlモジュール

CentOS に GD をインストール 出来なかったけど yum なら一発で出来た

GD のインストールに散々悩んだあげく、あきらめかていたけど、
http://tech.hitsug.net/?CentOS%2FPerlモジュール
このページに rpmforge レポジトリを使った yum でのインストールが載っていたので試したら一発で出来た。。。

yum --enablerepo=rpmforge install perl-GD

いろいろな要因があるのだろうけど。