Bio-EnsEMBL
view release on metacpan or search on metacpan
lib/Bio/EnsEMBL/Analysis/Programs.pm view on Meta::CPAN
# For each program, check there is an executable
foreach my $program (keys %Program_Paths) {
# Deal with paths
if ($program =~ m|/|) {
_go_home( $H );
my $path = $program;
# Deal with tildes
$path =~ s{^~([^/]*)}{ $1 ? (getpwnam($1))[7]
: (getpwuid($>))[7] }e;
if (my $real = _is_prog( $H, $path )) {
$Program_Paths{ $program } = $real;
}
}
# Or search through all paths
else {
foreach my $path (@PATH) {
_go_home( $H );
if (my $real = _is_prog( $H, $path, $program )) {
$Program_Paths{ $program } = $real;
lib/Bio/EnsEMBL/Analysis/Programs.pm view on Meta::CPAN
}
_go_home( $H ); # Return to home directory
# Make a list of all missing programs
foreach my $program (keys %Program_Paths) {
push( @missing, $program ) unless $Program_Paths{ $program };
}
# Give informative death message if programs weren't found
if (@missing) {
throw("Unable to locate the following programs as '". (getpwuid($<))[0]. "' on host '". hostname(). "' :\t".
join ( " --> " , @missing )) ;
}
}
# Recursive function which follows links, or tests final destination
sub _is_prog {
my( $h, $path, $prog ) = @_;
# Need to split path if $prog not provided
unless ($prog) {
( run in 0.500 second using v1.01-cache-2.11-cpan-8d75d55dd25 )