家探し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