今日出会ったCPANモジュール

これはまた便利というか面白いモジュール。

Perl には wantarray という組み込み関数がある。
これは,メソッドの呼出し側が戻り値としてリストコンテキストを要求しているのか判定する時に使用する。


Contextual::Return モジュールはリストだけでなく,呼出し側が要求している戻り値のコンテキストを色々と判定できる。

# SYNOPSIS 
 
use Contextual::Return;
use Carp;

sub foo {
    return
        SCALAR { 'thirty-twelve' }
        BOOL   { 1 }
        NUM    { 7*6 }
        STR    { 'forty-two' }

        LIST   { 1,2,3 }

        HASHREF   { {name => 'foo', value => 99} }
        ARRAYREF  { [3,2,1] }

        GLOBREF   { \*STDOUT }
        CODEREF   { croak "Don't use this result as code!"; }
    ;
}

# and later...

if (my $foo = foo()) {
    for my $count (1..$foo) {
        print "$count: $foo is:\n"
            . "    array: @{$foo}\n"
            . "    hash:  $foo->{name} => $foo->{value}\n"
            ;
    }
    print {$foo} $foo->();
}

このモジュールの作者は,Damian Conway 先生であった。