__ANON__ってさ

パッケージ名::__ANON__ってよく見かけると思うんですが、何かと言うと一言で言えば無名サブルーチン。

ってのは分かってはいたんですが、確かめた事が無かった(と思う)ので実際確かめてみたんですのよ。

use strict;
use warnings;
use Carp qw(croak);

my $sub = sub {
    croak "foo";
};

$sub->();

これでmain::__ANON__って出るはず。

foo at anon.pl line 6
        main::__ANON__() called at anon.pl line 9

でたでた。

ちなみに
ちゃんと名前があるとコードリファレンスでもちゃんと出ますのよ。

use strict;
use warnings;
use Carp qw(croak);

sub foo { croak('foo') }
my $sub = \&foo;

$sub->();
foo at anon.pl line 5
        main::foo() called at anon.pl line 8

まぁそりゃそうか。