Perl Quizで遊んでみる

Perl Quiz - package名について - Islands in the byte stream

#!perl -w
use strict;
use Test::More 'no_plan';
sub f{
    package main::Foo;
}
f();
is ref(bless({}, 'Foo')), 'Foo';

とか


#!perl -w
use strict;
use Test::More 'no_plan';
sub f{
    package Foo;
    our @ISA = ('Foo');
}
f();
is ref(bless({}, 'Foo')), 'Foo';

死ぬのは無し?でもf関数で死ぬわけじゃないから有り?

#!perl -w
use strict;
use Test::More 'no_plan';
sub f{
    }__END__
}
f();
is ref(bless({}, 'Foo')), 'Foo';

もういいや!


追記

Big Sky :: Perl Quiz に答えてみる

#!perl -w
use strict;
use Test::More 'no_plan';
sub f{
    # 何かする
    package ::Foo;
}
f();
is ref(bless({}, 'Foo')), 'Foo';

おおお、短い。


もっと短く出来ないか色々考えた結果、行き着いた結論がコレ。

#!perl -w
use strict;
use Test::More 'no_plan';
sub f{
    $::Foo::
}
f();
is ref(bless({}, 'Foo')), 'Foo';


なんか趣旨変わってる気もするが、これ以上はムリポだろ。