[Perl] 組込み関数を上書きする

Posted by
ぴろり
Posted at
2010/03/26 08:57
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
開発メモ カテゴリ

 print や substr といった、Perl の組込み関数を自前のルーチンで上書きする hack のメモ。ソースコードが混乱する元でしかないんだけど、良い子は真似しちゃダメだぞ!

この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  

subs プラグマを利用する方法

#!/usr/bin/perl
use subs qw( substr );

sub substr {
    print "$_[0], $_[1], $_[2]
";
}

substr 1, 2, 3; → "1, 2, 3"
print CORE::substr 1234567890, 2, 3; → "345"

CORE::GLOBAL 関数テーブルの上書き

#!/usr/bin/perl
BEGIN {
    *CORE::GLOBAL::substr = sub {
        print "$_[0], $_[1], $_[2]
";
    };
}

substr 1, 2, 3; → "1, 2, 3"
print CORE::substr 1234567890, 2, 3; → "345"

 標準関数のテーブルを上書きしているんだけれど、CORE::substr で標準関数が呼べてしまうのが謎。

この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  


この記事のアーカイブ

全ての記事 »
2010年
全てのカテゴリ »
電算室 » 開発メモ
全てのタグ »
, ,

関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。