Unknown::Programming このページをアンテナに追加 RSSフィード

2008-08-29 怪訝

packageの不思議


package Foo;
sub foo {
    print "foo\n";
}
package ::Foo;
foo;


package Bar::::::;
sub bar {
    print "bar\n";
}
bar;


package main::main::main;
sub main {
    print "main\n";
}
package main;
main;

実行結果(codepad)

とっても不思議だね!

chaichanPaPachaichanPaPa 2008/09/02 20:30 何が不思議なのか、私にはわかりません。
パッケージ名は、ただの名前空間の名前なので『::』は、useみたいに特別な意味(パスとしての)は、ないと思います。
呼ばれたsubが実行されるだけでは?
すみません、とんちんかんなこと言っているかもしれませんが・・・。

fbisfbis 2008/09/02 20:39 えーっと、説明放棄したネタだったんですが、あえて補足しますと

package Foo;
sub foo {
print ”foo¥n”;
}
package ::Foo;
foo;

package main::main::main;
sub main {
print ”main¥n”;
}
package main;
main;

これらは動くけど

package Baz;
sub baz {
print ”baz¥n”;
}
package Baz::;
baz;

package Hoge::Hoge::Hoge;
sub hoge {
print ”hoge¥n”;
}
package Hoge;
hoge;

これらは動かない、ってだけの話です。

chaichanPaPachaichanPaPa 2008/09/02 23:25 不思議、了解です。確認しました。
『あえて補足』、ありがとうございます。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/fbis/20080829/1219990408
Connection: close