#!/usr/bin/perl use strict; use warnings; use Cwd 'realpath'; use FindBin; use File::Basename qw( dirname ); use File::Spec::Functions qw( rel2abs ); my $name1 = readlink($0) if(-l $0); my $name = $0; $name = readlink($name) while(-l $name); my $key; my %paths = ( '$FindBin::RealBin ' => $FindBin::RealBin . "/../datadir", 'dirname($0) ' => dirname($0) . "/../datadir", 'dirname($name) ' => dirname($name) . "/../datadir", 'dirname(rel2abs($0)) ' => dirname(rel2abs($0)) . "/../datadir", 'dirname(rel2abs($name1)) ' => dirname(rel2abs($name1)) . "/../datadir" ); print "Checking for mydata in ../datadir:\n\n"; foreach $key (sort(keys %paths)) { print $key,": ",$paths{$key},"\t— "; if(-e $paths{$key} . "/mydata") { print "passed\n" } else { print "failed\n" } }