名前空間
今まで名前空間にもmainが一番上に来る箒上の順序があるもんだと思ってたんだけども、
実は無いみたい。
#!/usr/bin/perl use strict; use warnings BEGIN{ $| = 1;print "Content-type: text/html\n\n"; open(STDERR, ">&STDOUT");print "start <br/>"; } package aaa; BEGIN{print "aaastart <br/>";} sub say{ my $class = shift; my $say = "hello aaa <br/>"; $class->output($say); } sub output{ my ($this,$arg) = @_; print $arg;} 1; package Test; print "hello world <br/>"; BEGIN{print "end <br/>" ;} aaa->say; 1; 1;
こんな感じに適当に打ってやると
普通にサブルーティン以外は、BEGINが上から処理された。びっくりだ。
つまり、main空間は使わなくても問題ないで
初期実行のみサブルーティンで囲わず書いとくと、スタート地点を擬似的に制御できるみたい。
NanoA見てて、なんでスタートがmain空間に無かったのか、どうやってNanoAルーティンから開始していたのか、
ようやく納得。
と言うか、こんな基本的なことも知らなかった事に驚きを隠せない。