__DATA__

Sledgeのプロジェクトの設定モジュールが便利そうだったのでパクって参考にしてみることにした。

で、そのまま真似するのはちょっと情けない。
最初はConfig::Simpleでも使おうかと思ったんだけどプロジェクトモジュールを自動で作成するってのに憧れたのでその方向でやってみることに。

でもCodeTemplateを使ってモジュール生成ってのは何かださい気がしたのでpackageのDATAフィールドに書き込んでみることにした。

さいしょだめかなーなんて思ってたのですがpackage内でも__END__ではなく__DATA__ならきちんとデータが取得出来ると教えて貰い組んでみる。

以下テストモジュール。

package test;

sub new
{
        my $self = shift;
        my $temp = '';
        my @temps;
        read(DATA,$temp,-s DATA);
        @temps = split($/,$temp);
        bless{
                test => [@temps]
             },$self;
}
1;

__DATA__
hoge
fuga
nigya
moge

そしてテストプログラムでこうやってみる。

use test;

my $test = test->new();
print $test->{test}->[1];

実行結果は

fuga

となるわけです。
自身のDATAが参照できるのなら当然そこにデータを書き込んでおいてモジュールの初期化値として利用できるわけです。
うっしゃやてみよっと。