=head1 名前 UNIVERSAL - 全てのクラス(ブレスされたリファレンス)の基底クラス =head1 概要 $is_io = $fd->isa("IO::Handle"); $is_io = Class->isa("IO::Handle"); $sub = $obj->can("print"); $sub = Class->can("print"); use UNIVERSAL qw( isa can VERSION ); $yes = isa $ref, "HASH" ; $sub = can $ref, "fandango" ; $ver = VERSION $obj ; =head1 説明 C は全てのブレスされたリファレンスが継承する基底クラスです, L も参照してください. C は以下のメソッドと関数を提供しています: =over 4 =item C<< $obj->isa( TYPE ) >> =item C<< CLASS->isa( TYPE ) >> =item C ここで =over 4 =item C はパッケージ名 =item C<$obj> はブレスされたリファレンスかパッケージ名を含んだ文字列 =item C はパッケージ名 =item C 上のいずれかかブレスされていないリファレンス =back インスタンス若しくはクラスメソッド (C<< $obj->isa( TYPE ) >>)として 使うときは $obj がパッケージ C 若しくはパッケージ C の派生にブレスされているときに I<真> を返します. クラスメソッド (C<< CLASS->isa( TYPE ) >>: スタティックメソッドとして 参照されることもあります)として使う時は C がパッケージ名 C 若しくはパッケージ C の派生から派生している(若しくは そのもの)の時に I<真> を返します. 関数として使うとき, 例えば use UNIVERSAL qw( isa ) ; $yes = isa $h, "HASH"; $yes = isa "Foo", "Bar"; 若しくは require UNIVERSAL ; $yes = UNIVERSAL::isa $a, "ARRAY"; 上のいずれかと同じケースでと C が "HASH", "ARRAY", 若しくは "Regexp" といった C 型の perl 変数へのブレスされていない リファレンスの時に I<真> を返します. =item C<< $obj->can( METHOD ) >> =item C<< CLASS->can( METHOD ) >> =item C C はオブジェクト若しくはクラスが C というメソッドを 持っているかを調べます. もし持っていれば関数リファレンスが返されます. もし持っていなければ I が返されます. これには C<$obj>, C, 若しくは C で継承されている若しくはインポートされている メソッドが含まれます. C はオブジェクトが AUTOLOAD を通してメソッドを提供可能かどうかは 知ることができません, そのため I が返ってきてもオブジェクトが そのメソッド呼び出しを処理することができないとは限りません. これを 回避するにはモジュールの作者が AUTOLOAD を使って処理するメソッドに対して 前方宣言を使うことです(L参照). そのような'ダミー'の関数は C はコードリファレンスを返しますが, それが呼び出された時には AUTOLOAD へとフォールスルーされます. もし適切な AUTOLOAD が提供されて いなければ, コードリファレンスの呼び出しはエラーになるでしょう. C はクラス(スタティック)メソッド, オブジェクトメソッド, さらには関数として呼び出すこともできます. 関数として呼び出されたときには, C は C というメソッドを 持っているブレスされたリファレンスかパッケージ名の時に C は 関数へのリファレンスを返します. C がブレスされたリファレンスで なかったり, C というメソッドを持っていなかったときには I が返されます. =item C C はオブジェクトがブレスされているパッケージの変数 C<$VERSION> の値を返します. もし C が与えられていた 場合には比較をおコアってパッケージのバージョンが C 以上でなかった場合には die します. C はクラス(スタティック)メソッド, オブジェクトメソッド, さらには関数として呼び出すこともできます. =back =head1 エクスポート デフォルトでは何もエクスポートされません. もし3つの関数全て (C, C, 及び C)を インポートさせたいかもしれませんが, 通常はその必要はありません. Perl は魔法のようにこれらの関数を全てのオブジェクトでメソッドとして 動作させます. 1つ例外は C で, これはブレスされていない リファレンスに対して操作するときに関数として役に立ちます. =head1 和訳 山科 氷魚 (YAMASHINA Hio) 原典: perl VERSION 5.8.8. 翻訳日: 2007-03-18.