It_lives_vainlyの日記 このページをアンテナに追加 RSSフィード

2008-03-17

[][] cpanを使ってみる

そんなわけで、軽くcpanを使って、モジュールを入手してみましょう。

わかりやすいところで、XML::DOMインストールをしてみます。

手始めにこんなスクリプトを書いてみました。

#!/usr/bin/perl

use utf8;

use strict;

use warnings;

use XML::DOM;


my $a_parser = new XML::DOM::Parser;

my $a_doc = $a_parser->parsefile( $ARGV[0] );

my $a_root_el = $a_doc->getFirstChild();

my @a_node_list = $a_root_el->getElementsByTagName( 'msg' );

foreach my $a_msg_el ( @a_node_list ){

my $a_text = $a_msg_el->getFirstChild();

print $a_text->getData() . "\n";

}

こんなxmlファイルを食わすと、msgタグに入っているテキストを表示するスクリプトです。

<msg_list>

<msg>this is cpan test.</msg>

<msg>:)</msg>

</msg_list>

...スクリプトには意味が無いけど...

で、実行してみると、当然"Image::Magick"なんて言うパッケージが見つからんので、

@INCを使って、検索パスの指定をしとけやっておこられる訳です。

早速ルートになってから、cpanシェルをたちあげます

# cpan -MCPAN -e 'shell'

プロンプトが、

cpan>

こんな風に変化します。

今は、Image::Magickってパッケージ名がわかっているんですけど、とりあえずは検索

してみることにします

cpan> i /XML::DOM/

こんな感じで正規表現を使って、検索を行ってくれます

そしてインストール

cpan> install XML::DOM

インストールを進めてみると、テストが動いて正しくインストールが行われたかの結果が出力されます。

今回の手順でインストールを進めると、恐らくテストに失敗しているはずです。

なんか、必要なライブラリとかがあったようなので、bashに戻って、必要そうなライブラリインストール

することにしました。

# aptitude install libxml-perl

でもって、cpanシェルから再度XML::DOMパッケージのインストールを行います。

# perl -MCPAN -e 'shell'

cpan> install XML::DOM

今度はうまくテストにパスしたようなので、最初に書いておいたスクリプトを動かしてみます。

正しく、

this is cpan test.

:)

こんな感じに出力されていれば、無事モジュールインストールが行えたってことですよね。

○ [補足1] cpanモジュールインストール

...最初にcpanを使ってモジュールインストールしたときに、libxml-perlがなくって

インストールに失敗した訳ですが、そのときに「cpanってどこにモジュールインストールすんだ?」

ってなことを疑問に思いました。

そんなわけで、インストールが終わった後、こんな感じで調べてみました

# cd /

# find . -name DOM.pm

なんか、"/usr/local/share/perl/5.8.8/XML/DOM.pm"に入っているみたいですね。

○ [補足2] apt-cache

libxml-perlインストールをするときに、apt-cacheにお世話になりました。

こいつを使うと、aptパッケージの検索を行うことができます

# apt-cache search libxml

こいつの一覧を見て、libxml-perlの存在を知った訳です。

○ [補足3] Image::Magick

最初は、cpanからImage::Magickのインストールをしてみようかと考えました。

(XML::DOMを使うよりは、派手な感じがするじゃない:p)

でもって、

cpan> install Image::Magick

ってインストールを進めたんですけど、テストに失敗してしまいました。

恐らく、ImageMagick本体orライブラリが足りないんだろうと思って、apt-cache

使ってパッケージ検索していたら、まんま perlmagick を見つけてしまいました。

そんな訳で、

# aptitude install perlmagick

ってしてあげたら、cpan使うまでもなく、Image::Magickモジュールが使えるように

なりました。

...サンプルコードまで書いてみたのに(^^;;;

くやしいので、さらしておくとこんなスクリプトを書いてみました。

#!/usr/bin/perl

use utf8;

use Image::Magick;

my $a_img_file = $ARGV[0];

my $a_new_file = $ARGV[1];

my $a_img = new Image::Magick();

$a_img->Read( $a_img_file );

$a_img->Resize( width => 120, height => 120 );

$a_img->Write( $a_new_file );

○ 参考文献

なんだかんだ言っても、らくだ本は必須なんだと思いました。

なにより、読み物として面白いし。

(ちゃんと読み終わったらレビューを別に書く)