CPAN

Parallel::ForkManager のサンプル

#!/usr/bin/env perl use strict; use warnings; use Getopt::Long; use Parallel::ForkManager; GetOptions( 'h|help' => \my $help, 'p|process=i' => \my $process, 'verbose' => \my $verbose, ) or pod2usage(); pod2usage() if $help; my $pm = Parall…

Coro で WWW::Mechanize を使ってみる

#!/usr/bin/env perl use strict; use warnings; use Coro; use Coro::LWP; use Data::Dumper; use WWW::Mechanize; my @coros = (); my @urls = qw|https://twitter.com/ https://www.pinterest.com/ http://www.apple.com/|; foreach my $url (@urls) { pu…

Amazon EC 2 で Amazon Linux AMI に cpanm で DBD::mysql をインストールする

その前提として、 perlbrew で独自に Perl をインストールしている cpanm を使ってインストールする というのがある。 DBD::mysql をインストールする おそらく DBD::mysql をインストールするのに失敗し、「~/.cpanm/build.log」をみるようにメッセージが出…

Windows 7 で Amon2 が動作するのか?

結論としては、Amon2 で作成した雛形内に cpanm をインストールするところから、進められていない。理由は、「Nmake15.exe が 64 bit に対応していない」からだ。 前提 今回試してみた環境は次の通り。 Windows 7 64 bit SP1 ActivePerl 5.14.2 この ActiveP…

Perl 本体が落ちる

Windows 7 上で Perl を実行すると Perl.exe が初めてクラッシュした。思い当たることがなく、同じスクリプトを FreeBSD 上で実行すると Perl がクラッシュしてコアダンプを吐き出した。 % tail -f /var/log/messages Nov 18 13:43:49 myhost kernel: pid 83…

XAMPP の MySQL を利用して Perl の DBD::mysql をインストールできるか

結論としては、インストールできないといわざるを得ないと考える。理由としては、DBD::mysql をインストールするのに必要なファイルが、XAMPP の MySQL では不足しているからだ。 % cpanm DBD::mysql でインストールをすると、mysql_config のパスがわからな…

LWP::UserAgent で gzip, deflate のデータを受け取る

#!/usr/bin/env perl # 日本語 use strict; use warnings; use LWP::UserAgent; use HTTP::Message; use utf8; my $board_list_url = 'http://www.example.com/'; my $ua = LWP::UserAgent->new; my $can_accept = HTTP::Message::decodable; my $response =…

WWW::Mechanize と文字コード

WWW::Mechanize は、 HTTP レスポンスヘッダ部分の Content-type で設定されている charset HTTP レスポンスのボディに記述されている文字コードmeta 要素で設定されている Content-Type の charset を参照して、データの文字列を Perl 内部の文字列にデコー…

Slim3 の application_ja.properties に日本語を書くために UTF-16 LE を16進数で表現する

Slim3 の application_ja.properties にマルチバイトを記述するには、文字列を UTF-16LE に変換して16進数でダンプする必要があることに気が付いた。 この方法を Java でやる方法がわからなかったので、Perl で書いてみた。 #!/usr/bin/perl use strict; use…

WWW::Mechanize で HTTP ステータスによって die するのを回避する

通常の初期設定では、WWW::Mechanize は HTTP ステータスで 400 や 404 コードが返されると、WWW::Mechanize は die を起こして処理を中断してしまう。 そのため、400 や 404 コードが返された場合の処理が記述できない。 対応方法 use WWW::Mechanize; my $…

cpanm で Image::Magick のインストールをする方法

その前に cpanm で Image::Magick をインストールする環境は次のようになっている。 perlbrew で Perl 5.12.1 をインストールしている cpanm は perlbrew のインストール時にインストールされたもの手動で入れても、適宜設定を自分の環境に読み替えれば、成…

cpanm で WWW::Mechanize インストールの失敗を回避した方法

追記あり その後、下記の回避方法を使わずに、WWW::Mechanize をインストールできた*1。 昨夜、perlbrew でインストールをした Perl 5.12.1 に CPAN モジュールを追加していたら、WWW::Mechanize の依存モジュールのインストールに失敗した。 エラーログが、…

タイムスタンプを日付に、日付をタイムスタンプに変換する

#!/usr/bin/env perl use strict; use warnings; use utf8; use Time::Local; sub timestamp2date { my $timestamp = shift; my ($sec, $min, $hour, $day, $mon, $year) = localtime($timestamp); return sprintf('%04d-%02d-%02d %02d:%02d:%02d', $year +…

WWW::Mechanize のメモリ消費量について

WWW::Mechanizeは、通常の利用範囲ならば、メモリ消費量について問題にはならないと思う。 しかし、一回の実行で、数千回以上の URL アクセスを繰り返すようならば、WWW::Mechanize のメモリ消費量を考慮すべきである。考慮しないと、そのうちに Out of Memo…

Windows 版 ActivePerl で ImageMagick を使えるようにする

Windows 版の ActivePerl は PPM(Perl Package Manager) から ImageMagick を利用できるようにすることができる。そのおかげで、単体で ImageMagick をインストールする必要がない。 1.まずは、DOS プロンプトから PPM を起動する DOS プロンプトが開いたら…

Perl のテンプレートエンジン Tenjin の文字化け対策

Tenjin は他のテンプレートエンジンと比較して動作が速いということで、試しに使ってみた。 しかし、テンプレートに含まれる日本語が文字化けしてしまう。 Tenjin の特徴として、 Ability to set the encoding of your templates is added. や encoding - An…

cron で Perl スクリプト実行時に Can't locate My/Module.pm in @INC 等のエラーが出る

独自のモジュールを読み込ませて cron を実行するとエラーが出る場合がある。 原因は cron が実行する際のディレクトリが、cron の実行ユーザーのホームディレクトリになるため、任意のディレクトリを @INC に設定していてもエラーが発生する。 モジュールの…

Mac OS X に HTML::Tidy がインストールできるといいな

パッチをあてて HTML::Tidy のインストールを試してみる まずは HTML::Tidy のソースをダウンロードする。 % mkdir ~/src % cd src % wget http://search.cpan.org/CPAN/authors/id/P/PE/PETDANCE/HTML-Tidy-1.08.tar.gz --2010-03-09 23:46:54-- http://sea…

Mac OS X で HTML::Tidy 再び

MacOS X には HTML::Tidy はインストールできないのか で HTML::Tidy のインストールに失敗すると書いた。先日、delphinus35 さんから、MacPorts を利用して Tidy をインストールされる際に生成される libtidy.a を使えば、HTML::Tidy をインストールできる…

XML::FeedPP で RSS を出力する

PP は Pure Perl の略のようで、コンパイルする必要がないモジュールのため、レンタルサーバーでも利用することができる。 サンプルコード #!/usr/bin/env perl use strict; use warnings; use utf8; use Encode; use DateTime; use XML::FeedPP; use Data::…

MacOS X には HTML::Tidy はインストールできないのか

まずは普通にインストールをしてみて失敗をする % cpan -i HTML::Tidy Failed 18/20 test scripts. 68/75 subtests failed. Files=20, Tests=75, 1 wallclock secs ( 0.59 cusr + 0.15 csys = 0.74 CPU) Failed 18/20 test programs. 68/75 subtests failed.…

Log4Perl でファイルとメールにログを残す

log4perl でファイルにログを残すのと、任意のレベル以上のエラーが発生した場合はメールを送信するように設定する。 簡易な設定ファイルの内容 log4perl.rootLogger = DEBUG, LogAppender, MAILER log4perl.appender.LogAppender = Log::Log4perl::Appender…

さくらに local::lib を利用して個人用 CPAN を使えるようにする

local::lib をダウンロードする % mkdir -p ~/local/var/db/pkg % wget http://ftp.yz.yamagata-u.ac.jp/pub/lang/cpan/authors/id/A/AP/APEIRON/local-lib-1.004009.tar.gz % tar zxvf local-lib-1.004009.tar.gz % cd local-lib-1.004009/ BSDPAN のエラー…

Oracle に接続するためにドライバをインストールする

# whereis p5-DBI p5-DBI: /usr/ports/databases/p5-DBI/Makefile # cd /usr/ports/databases/p5-DBI # make fetch-recursive # make install clean # whereis p5-DBD-Oracle # cd ../p5-DBD-Oracle/ # cd /usr/ports/databases/p5-DBI # make fetch-recursi…

Gentoo に CPAN 管理用のパッケージ g-cpan をインストールする

参考 g-cpan Guide g-cpan とは g-cpan is a tool that generates and installs perl modules and bundles from CPAN "on-the-fly". http://www.gentoo.org/proj/en/perl/g-cpan.xml#doc_chap1 When you run g-cpan, it will check for two configuration fi…

ユーザーディレクトリ下に local::lib を使って CPAN 環境を構築する

前準備 % mkdir src % cd src % wget http://ftp.nara.wide.ad.jp/pub/CPAN/authors/id/A/AP/APEIRON/local-lib-1.004001.tar.gz 最新版の local::lib は http://ftp.nara.wide.ad.jp/pub/CPAN/authors/id/A/AP/APEIRON/ で確認をする。 CPAN の設定をする。…

FreeBSD で Perl がアップグレードされた後に、CPAN モジュールが動かなくなった場合の対処

Perl がアップグレードされた後に、CPAN モジュールが動かなくなる原因は、古いバージョンの環境変数 @INC を参照しているのが原因である。 FreeBSD では、古いバージョンの Perl から新しいバージョンの Perl へ CPAN モジュール群を読み込む @INC と、/var…

日付から期間を計算する

#!/usr/bin/perl use strict; use warnings; use Date::Simple; my $term = Date::Simple::date('2009-02-06') - Date::Simple::date('2009-02-04'); print $term, "\n", 実行結果 1 期間は、開始日から終了日まで何日存在するかを計算して。日数を返す。 そ…

LWP::UserAgent で POST メソッドを利用する際の簡単なサンプル

#!/usr/bin/perl use strict; use warnings; use utf8; use Encode; use LWP::UserAgent; use HTTP::Request::Common qw(POST); my $user = 'username'; my $pass = 'passowrd; my $url = 'http://www.example.com/cgi-bin/dummy.cgi'; my $referer = 'http:…

YAML::Syck でハッシュと配列のネストになっているデータ構造からデータを取得する場合

サンプル #!/usr/bin/perl use strict; use warnings; use utf8; use YAML::Syck; # ハッシュ -> 配列 -> ハッシュの # ネスト構造になっている場合 my $yaml = <