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タグに入っているテキストを表示するスクリプトです。
this is cpan test.
:)
...スクリプトには意味が無いけど...
で、実行してみると、当然"Image::Magick"なんて言うパッケージが見つからんので、
@INCを使って、検索パスの指定をしとけやっておこられる訳です。
早速ルートになってから、cpanのシェルをたちあげます
# cpan -MCPAN -e 'shell'
プロンプトが、
cpan>
こんな風に変化します。
今は、Image::Magickってパッケージ名がわかっているんですけど、とりあえずは検索
してみることにします
こんな感じで正規表現を使って、検索を行ってくれます
そしてインストール
インストールを進めてみると、テストが動いて正しくインストールが行われたかの結果が出力されます。
今回の手順でインストールを進めると、恐らくテストに失敗しているはずです。
なんか、必要なライブラリとかがあったようなので、bashに戻って、必要そうなライブラリをインストール
することにしました。
でもって、cpanシェルから再度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 );
○ 参考文献
- 作者: ラリーウォール,ジョンオーワント,トムクリスチャンセン,Larry Wall,Jon Orwant,Tom Christiansen,近藤嘉雪
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2002/09
- メディア: 単行本
- 購入: 4人 クリック: 94回
- この商品を含むブログ (63件) を見る
なんだかんだ言っても、らくだ本は必須なんだと思いました。
なにより、読み物として面白いし。
(ちゃんと読み終わったらレビューを別に書く)