Perlメモ

Ads

perldoc.comperldoc.jp - 全ての基本

組み込み関数とオペレータ

  • perlfunc - Perl builtin functions
  • perlop - Perl operators and precedence

チュートリアルなどのドキュメント

  • perlstyle - Perl スタイルガイド
  • perltoot - トムによるPerlオブジェクト指向チュートリアル
  • perltooc - トムによるPerlのクラスデータのためのオブジェクト指向チュートリアル
  • perlnewmod - 新しいモジュールを配布するには
  • perlthrtut - Perlにおけるスレッドのチュートリアル
  • perluniintro - Perl Unicode の手引き

プラグマ

  • strict - 安全ではないコンストラクトを制限する Perl プラグマ
  • warnings - 選択的な警告を調整する Perl プラグマ
  • utf8 - ソースコード内に、UTF-8(か、UTF-EBCDIC)を有効/無効にするためのプラグマ

その他モジュール

Perl5.8以降のスレッド - Perlでマルチスレッド

  • threads - インタプリタスレッドの使用を可能にするPerl拡張
  • threads::shared - スレッド間でデータ構造を共有するためのPerl拡張
  • Thread::Queue - スレッドセーフなキュー(待ち行列)
  • Thread::Semaphore - スレッドセーフなセマフォ

テスト

文字コード関連

  • Encode - Perl5.8 移行はこのモジュールで文字コードの変換を行う。
  • Encode::JP - Encode モジュールが内部的に使うだけなので直接は use しない。ABSTRUCT みてエンコーディング名を確認する。
  • Encode::Guess - 文字コードの自動判別を行う。

日時関連

  • Date::Parse - Apache のログなどに見られる "19/Jan/2004:16:51:50 +0900 という形の文字列を UNIX time に変換する。
  • POSIX qw(strftime) - %Y%m%d 等の文字列と localtime で得た配列から日時をデコードしたものを得る

その他

  • Data::Dumper - php でいう print_r みたいなの。便利。
  • Clone - ネストしているオブジェクトの再帰的コピーのためのPerl拡張

Tips&FAQ

スコープの話で気をつけること

基本は

  • 全ての変数に my を付ける。
  • $_ は使わない。 $_ はサブルーチンの中で変更すると、その変更はそのサブルーチンの変更元にも影響するので使わないようにすべし。
    • while(<HOGE>) は while(my $line = <HOGE>) とすべし。
    • foreach(@hoge) は foreach my $val (@hoge) とすべし。
    • s/hoge/fuga/; も同じく、my $tmp = $_; $tmp =~ s/hoge/fuga/ をすべし。

my と local の違い

  • my はそのスコープのみで局所化するする。
  • local はそのスコープとそのスコープから呼ばれる関数のスコープまでを局所化する。

基本的には全て my で良い。

あと、$_ を局所化したい場合は、local $_; とする。my $_; はエラーになる。 しかし、そもそも $_ は使わない方がよい。

日本語処理

文字コード変換

Encode モジュールの from_to メソッドを使う。

文字コード自動判別

  • Encode::Guess を使う。
  • 使用例
    use Encode;
    use Encode::Guess qw/ euc-jp shiftjis 7bit-jis /;
    $date = "文字コードが不明なデータ";
    from_to($data, 'Guess', 'euc-jp' );
    print $data; #euc-jpで出力される。

扱える文字コードの一覧取得

use Encode qw(from_to);
@list = Encode->encodings("Encode::JP");
print join("\n", @list);

CSV のパース

コメント



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-01-07 (日) 23:57:37 (4358d)