perl-5.22.1
ref EXPR
ref

Returns a non-empty string if EXPR is a reference, the empty string otherwise. If EXPR is not specified, $_ will be used. The value returned depends on the type of thing the reference is a reference to.

EXPR がリファレンスであれば、空でない文字列を返し、さもなくば、 空文字列を返します。 EXPR が指定されなければ、$_ が使われます。 返される値は、リファレンスが参照するものの型に依存します。

Builtin types include:

組み込みの型には、以下のものがあります。

    SCALAR
    ARRAY
    HASH
    CODE
    REF
    GLOB
    LVALUE
    FORMAT
    IO
    VSTRING
    Regexp

You can think of ref as a typeof operator.

ref は、typeof 演算子のように考えることができます。

    if (ref($r) eq "HASH") {
        print "r is a reference to a hash.\n";
    }
    unless (ref($r)) {
        print "r is not a reference at all.\n";
    }

The return value LVALUE indicates a reference to an lvalue that is not a variable. You get this from taking the reference of function calls like pos() or substr(). VSTRING is returned if the reference points to a version string.

返り値 LVALUE は、変数ではない左辺値へのリファレンスを示します。 これは、pos()substr() のようの関数呼び出しのリファレンスから 得られます。 VSTRING は、リファレンスが version string を 指している場合に返されます。

The result Regexp indicates that the argument is a regular expression resulting from qr//.

Regexp という結果は、引数が qr// からの結果である 正規表現であることを意味します。

If the referenced object has been blessed into a package, then that package name is returned instead. But don't use that, as it's now considered "bad practice". For one reason, an object could be using a class called Regexp or IO, or even HASH. Also, ref doesn't take into account subclasses, like isa does.

参照されるオブジェクトが、何らかのパッケージに bless されたものであれば、 これらの代わりに、そのパッケージ名が返されます。 しかし、これは今では「悪い習慣」と考えられているので、しないでください。 理由の一つは、オブジェクトは Regexp, IOHASH などと呼ばれる クラスを使うかも知れないからです。 また、refisa のようにサブクラスを考慮したりはしません。

Instead, use blessed (in the Scalar::Util module) for boolean checks, isa for specific class checks and reftype (also from Scalar::Util) for type checks. (See perlobj for details and a blessed/isa example.)

代わりに、真偽値チェックには (Scalar::Util モジュールにある) blessed を、特定のクラスのチェックには isa を、型のチェックには (これも Scalar::Util にある) reftype を使ってください。 (詳細と blessed/isa の例については perlobj を参照してください。)

See also perlref.

perlref も参照してください。