if (!do($include)) {
my $error = $@ ? $@
: $! ? $!
: 'did not return a true value';
die("Unable to load common stuff: $error\n");
}
It probably failed because the current working directory is not what you think it is.
Use absolute paths,
use File::Basename qw( dirname );
use File::Spec::Functions qw( rel2abs );
my $include_fq = rel2abs('common.inc', dirname(rel2abs($0)));
if (!do($include_fq)) {
my $error = $@ ? $@
: $! ? $!
: 'did not return a true value';
die("Unable to load common stuff: $error\n");
}
use absolute paths in @INC,
use File::Basename qw( dirname );
use File::Spec::Functions qw( rel2abs );
use lib dirname(rel2abs($0));
if (!do('common.inc')) {
my $error = $@ ? $@
: $! ? $!
: 'did not return a true value';
die("Unable to load common stuff: $error\n");
}
or change the current directory to where you expect it to be.
use File::Basename qw( dirname );
use File::Spec::Functions qw( rel2abs );
BEGIN { chdir(dirname(rel2abs($0))); }
if (!do('common.inc')) {
my $extra = $@ ? ": $@" :
$! ? ": $!" :
': did not return a true value';
die("Unable to load common stuff$extra\n");
}
P.S. — What's with "./"? "./foo" is the same thing as just "foo".
Update: Added $!/$@ to the error message when do sets them.
Update: Added use lib solution.
|