package My::Sweet::Home;
use warnings;
use strict;
use Cwd ();
our $APP_NAME = 'HOGE';
our $Home = undef;
sub location {
my $self = shift;
my @homes = (
sub {$My::Sweet::Home::Home},
sub { $ENV{ $APP_NAME . '_HOME' } },
sub { Cwd::getcwd },
);
for my $home (@homes) {
my $res = $home->();
next unless $res;
return $res;
}
die 'you are a homeless T_T';
}
1;
#!/usr/bin/perl
use warnings;
use strict;
use My::Sweet::Home;
{
print '1:' . My::Sweet::Home->location() . "\n";
}
{
$ENV{SWEETY_HOME} = '/home/seety';
local $My::Sweet::Home::APP_NAME ='SWEETY';
print '2:' . My::Sweet::Home->location() . "\n";
}
{
local $My::Sweet::Home::Home ='/tmp/okushon';
print '3:' . My::Sweet::Home->location() . "\n";
}
1:/home/tomyhero/app/My-Sweet-Home/lib
2:/home/seety
3:/tmp/okushon