わいえむねっと

Contents
Categories
Calendar
2010/05
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Monthly Archives
~2000/01
Recent Entries
RSS1.0
Templates
Information
Processed: 0.065 sec
Chashed: -
2010/05/19 Wed
同一ファイル内のパッケージのサブルーチンをインポートしてみるテスト。

モジュールの場合

package Foo;
use base qw(Exporter);
our @EXPORT_OK = qw(foo);

sub foo
{
    print $_[0];
}

1;

use Foo qw(foo);

foo 'foo';
#foo

とりあえずモジュールをねじ込む

package Foo;
use base qw(Exporter);
our @EXPORT_OK = qw(foo);

sub foo
{
    print $_[0];
}

package main;

foo 'foo';
#String found where operator expected at foo.pl line 12, near "foo 'foo'"
#    (Do you need to predeclare foo?)
#syntax error at foo.pl line 12, near "foo 'foo'"
#Execution of foo.pl aborted due to compilation errors.

Foo::foo 'foo';
#foo

とりあえずimportしてみる

package Foo;
use base qw(Exporter);
our @EXPORT_OK = qw(foo);

sub foo
{
    print $_[0];
}

package main;
BEGIN {import Foo qw(foo)}

foo 'foo';
#"foo" is not exported by the Foo module
#Can't continue after import errors at foo.pl line 11
#BEGIN failed--compilation aborted at foo.pl line 11.

タイミングを前にずらしてみる

package Foo;
use base qw(Exporter);
BEGIN {our @EXPORT_OK = qw(foo)}

sub foo
{
    print $_[0];
}

package main;
BEGIN {import Foo qw(foo)}

foo 'foo';
#foo

タイミングを後ろにずらしてみる

package Foo;
use base qw(Exporter);
our @EXPORT_OK = qw(foo);

sub foo
{
    print $_[0];
}

package main;
import Foo qw(foo);

foo 'foo';
#String found where operator expected at foo.pl line 13, near "foo 'foo'"
#    (Do you need to predeclare foo?)
#syntax error at foo.pl line 13, near "foo 'foo'"
#Execution of foo.pl aborted due to compilation errors.

eval "foo 'foo'";
#foo

宣言してお茶を濁してみる

package Foo;
use base qw(Exporter);
our @EXPORT_OK = qw(foo);

sub foo
{
    print $_[0];
}

package main;
sub foo;
import Foo qw(foo);

foo 'foo';
#foo

Exporterのことは忘れてシンボルテーブルに自前でねじ込んでみる

package Foo;

sub import
{
    my $pkg = shift @_;
    *{caller(0)."::$_"} = \&{$pkg."::$_"} foreach @_;
}

sub foo
{
    print $_[0];
}

package main;
BEGIN {import Foo qw(foo)}

foo 'foo';
#foo

There's more than one way to do it!

というか、そもそも前提条件がオカシイという話に対しては全力で耳を塞いで生きていきたい。
ご飯や豆腐・納豆や麺にたっぷりかけて
色々な料理に相性ばっちり!

とかいう謳い文句を完全に無視して酒のアテとして直でつついていたねぎからしが切れた。
結構よかったので見かけたらまた買おう。
相変わらずこの人は、ネギとかシソとか薬味が好きすぎる。

尾花沢食品-ねぎからし-つけもの[食べログ]
http://o.tabelog.​com/otrdtl/14878/

小葉菜庵 おらが村のねぎからし - 尾花沢食品 - qooon_com
http://qooon.com/archives/2009/09/post-35.html