perl

ppmのリポジトリ

http://cpan.uwinnipeg.ca/htdocs/faqs/ppm.htmlで紹介されているhttp://trouchelle.com/ppmが良いっていうメモ。

CGIモジュール

CGIモジュールを使ってちょっとしたWebアプリケーションを作っています。 POSTされた生データの取得が必要になり、CGIモジュールにそれを得られるメソッドがないか探したのですが見つかりませんでした。 あってもよさそうなものなのですが、こういう場合皆さ…

動的にuse

自分用のメモです。 設定ファイルなどにクラス名を記入し、そのクラスを動的にuseした場合にどうすれば良いか調べていたところ、次のような記事がありました。 perl でモジュールを use しますが、時としてクラス名を動的に生成して use したい時があります…

関数の呼び出し元情報

Carpモジュールを使うと関数の呼び出し元情報(スタックトレース)が出力されるわけですが、どうやって出力しているかソースコードを見てみました。 すると、caller()という関数を使っていました。 参考:http://www.rfs.jp/sb/perl/05/caller.html こんな関…

perlでテストファースト

私のperlのテスト環境について書いてみます。perlスクリプトのテストには、Test::Moreモジュールを使っています。 使い方はこんな感じ。Module.t use strict; use Test::More 'no_plan'; BEGIN{ use_ok('Module')}; my $r = Module->new; is ref($r), 'Modul…

perlで共通定数を使う方法

こんな感じかな。 共通定数定義モジュール Constant.pm #!/usr/bin/perl package Constant; use strict; # Exporterを継承 use base qw/Exporter/; # グローバル変数の使用を宣言 use vars qw /@EXPORT_OK/; # @EXPORT_OKは要求に応じてエクスポートするシン…

Data::Page::Navigation

d:id:iox:20070618:1182158941の記事にid:fbisさんからブックマークでData::Page::Navigationを使うとさらに便利と教えてもらいましたので、早速少し使ってみました。このモジュールは、Data::Pageモジュールにメソッドを加えたモジュールのようで、pages_pe…

DBIx::Classのページング処理

現在、DBIx::ClassとTemplate Toolkitを勉強しているところですが、ページングの処理が驚くほど簡単に書けるので自分用のメモを残しておきます。 CGI側でresultsetオブジェクトに対しpager()をコールすることで、Data::Pageオブジェクトを取得できます。 my …

CGIスクリプトのデバッグについてのメモ Web+DBより

CGIスクリプトのデバッグは標準エラー出力にprintするのが一般的です。 Apacheならサーバのエラーログに出力されます。さらに、warnを使うとスクリプトのファイル名や行数も出力されるので便利です。 warn "date is $date"; このスクリプトの出力は、 date i…

ourとlocal宣言

ourはグローバル変数の宣言に使用される。 一般的には、以下のように使う。 use strict; use warning; our $Global; sub hoge { our $Global; # この宣言をせずにも$Globalは使えるが # このようにグローバル宣言を明示するとコードが見やすくなる } ourは、…

デバッグ時に

デバッグ時の自分用メモです。 配列やハッシュの入れ子の内容を表示したいときは、Data::Dumperを使うと楽です。 こんだけ。 use Data::Dumper; my @data = 配列とかハッシュの入れ子; print Dumper(\@data);

ハッシュの配列

久々に仕事でPerlを使う機会があり、作っているところなのですがかなり忘れててショッキングでした。 ハッシュの配列からとある1要素を取り出して引数として返す基本的な処理を作るのに、ハッシュのリファレンスの取り扱いでかなりはまってしまいました・・…

警告メッセージとファイル読み込み

Perlでは、-wもしくはuse wariningsのどちらかで警告メッセージを出力してくれます。 この警告メッセージの意味がわからない場合は、perldiagマニュアルを読むか、プログラムの開始部分にuse diagnosticsを追加しておけば、エラーメッセージがドキュメント内…