cd /var/tmp
mkdir mydir
mkdir datadir
mkdir otherdir
cd otherdir
ln -s ../mydir symdir
####
#!/usr/bin/perl
use strict;
use warnings;
use FindBin;
use File::Basename qw( dirname );
use File::Spec::Functions qw( rel2abs );
my $name = $0;
$name = readlink($name) if(-l $name);
print "Finding a data path:\n\n";
print 'dirname($name):',dirname($name),"/../datadir\n";
print 'dirname(rel2abs($name)):',dirname(rel2abs($name)),"/../datadir\n";
print 'dirname($0):',dirname($0),"/../datadir\n";
print 'dirname(rel2abs($0)):',dirname(rel2abs($0)),"/../datadir\n";
print '$FindBin::RealBin:',$FindBin::RealBin,"/../datadir\n";
####
Finding a data path:
dirname($name):/var/tmp/otherdir/symdir/../datadir
dirname(rel2abs($name)):/var/tmp/otherdir/symdir/../datadir
dirname($0):/usr/local/bin/../datadir
dirname(rel2abs($0)):/usr/local/bin/../datadir
$FindBin::RealBin:/var/tmp/mydir/../datadir