ユーザ用ツール

サイト用ツール


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

で何が設定できるか見れる

ミラー

ftp.cpan.orgは遅い、遅すぎる。

CPAN> o conf urllist 何かCPANミラーのURL

ミラーはここから探せ http://mirrors.cpan.org/

手動で入れる

サーバにインストールせずに使いたい、サーバにインストールできない場合、 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