perl
目次
perl
ちょっとした技
カレントディレクトリ以下のpmファイルをまとめてperl -wcする
$ find . -name "*.pm" -exec perl -wc {} \;
Catalystのプロジェクトディレクトリではこんな感じで打つと自作モジュールも含めてlib以下のモジュールを一度に検査できる
$ find . -name "*.pm" -exec perl -Ilib -wc {} \;
四捨五入
0.5を足してintで良い筈
# 税込み価格 int($price + $price * $tax_rate + 0.5);
CPAN
CPAN設定、cpanシェルを起動して以下の操作、全部せっていするなら
CPAN> o conf init
個別に設定するなら
CPAN> o conf
で何が設定できるか見れる
ミラー
手動で入れる
サーバにインストールせずに使いたい、サーバにインストールできない場合、 Cモジュールを使ってなければ、適当な場所において use lib … で動く。
CSV_XSみたいなCモジュールを使っているものは、CPANからtar.gzをダウンロードして展開
perl Makefile.PL PREFIX=/適当なパス make make install
上の例ならば
適当なパス/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/
にモジュールが設置される。このディレクトリ以下を丸ごとコピーするなり直接 use lib するなりお好きなようにやる。サーバでmakeが使えない場合でもOSとCPU種類が同じ別のマシンでコンパイルすれば大抵動く。依存モジュールがたくさんある場合は頑張る、もしくは諦めて違う方法を考える。
モジュールのバージョン確認
C:\>perl -mXML::RSS -le "print XML::RSS->VERSION"
とか
Perldoc
ドキュメントを読む
perldoc -l XML::RSS
自分のコードでもpod形式で書いておくとperldocで閲覧できるので、モジュールやサブルーチンの説明はperldocで書こう。
モジュールのパスを調べる
perldoc -l XML::RSS
モジュールのソースコードを見る
perldoc -m XML::RSS
ページャはデフォルトでmore、ページャを指定するには環境変数PAGER、MANPAGER、PERLDOC_PAGERのどれかで指定。
配列とリファレンス
リファレンスってなあに?という人はらくだの本とか読んで。
# 配列 @hoge = (1,2,3,4,5,6); for ($i = 0; $i < scalar(@hoge); $i++) { print $hoge[$i] , "\n"; } # 配列のリファレンスを取得 $fuga = \@hoge; for ($i = 0; $i < scalar(@$fuga); $i++) { # 参照先の[$i]を取得 print $fuga->[$i]; # 実体にアクセスし、配列としてアクセス print $$fuga[$i] , "\n"; } # リファレンス先のの実体を配列としてアクセス @piyo = @$fuga; for ($i = 0; $i < scalar(@piyo); $i++) { print $piyo[$i] , "\n"; } # 配列へのリファレンスを作る $puni = [1,2,3,4,5,6]; for ($i = 0; $i < scalar(@$puni); $i++) { print $puni->[$i]; print $$puni[$i] , "\n"; }
リファレンス
# 実配列 @array = (); @array = (1,2,4,5); # 配列リファレンス $ref_array = []; $ref_array = [1,2,3,4,5]; # 配列のリファレンスを取得 $ref_array = \@array; print ref $ref_array; # ARRAYと出力 $ref_array = [@array]; print ref $ref_array; # ARRAYと出力 # 配列要素にアクセス $ref_array->[0]; # リファレンスを配列として扱いたいとき(push等のリスト操作関数に渡したいとき)はアタマに@を付けて push @$ref_array, 6;
# 実ハッシュ %hash = (); %hash = (a => "hoge", b => "fuga"); # ハッシュリファレンス $ref_hash = {}; $ref_hash = {a => "hoge", b => "fuga"}; # ハッシュ要素へのアクセス $ref_hash->{a}; # ハッシュのリファレンスを取得 $ref_hash = \%hash; print ref $ref_hash; # HASHと出力 $ref_hash = {%hash}; print ref $ref_hash; # HASHと出力 # ハッシュとして扱う keys %$ref_hash;
my $hoge = 3; my $ref_sub = sub { return $_[0] * $hoge; }; print &$ref_sub(4); # 12と出力
無名サブルーチンでクロージャが作れる
perl.txt · 最終更新: 2010/01/25 08:07 by 127.0.0.1