家探し2
ウーム。雰囲気。戻り値は Path::Classのobjのほうがお洒落か。
package App::Home; use warnings; use strict; use base qw/Class::Data::Inheritable/; use Cwd (); __PACKAGE__->mk_classdata('app_name'); __PACKAGE__->mk_classdata('order'); __PACKAGE__->app_name('my_app'); __PACKAGE__->order([ 'env' , 'sledge_like' , 'catalyst_like' , 'current_position' ]); sub env { my $class = shift; $ENV{ uc $class->app_name , '_HOME'}; } sub load { my $class = shift; for my $item ( @{$class->order} ) { my $res = $class->$item(); next unless $res; return $res; } die 'you have no home. take care your mother'; } sub sledge_like { '/tmp/sledge_like/'; } sub catalyst_like { '/tmp/catalyst_like', } sub current_position { Cwd::getcwd(); } 1; =head1 NAME App::Home - home sweet home =head1 SYNOPYIS package MyHome; use base qw/App::Home/; __PACKAGE__->app_name('kanagawa'); our $PATH = __PACKAGE__->load(); sub path { $PATH } 1; #!/usr/bin/perl use warnings; use strict; use MyHome; my $home = MyHome->path; print $home; =cut