use strict;
use File::Spec::Functions;
use Data::Dumper; # for debugging purpose only
my $path = canonpath("../somedir/path/");
print "$path\n";
my @dirs = qw( ../dir/path1 ../dir/path2 );
my @canon_dirs = map { canonpath($_) } @dirs;
print Dumper(\@canon_dirs);
####
../somedir/path
$VAR1 = [
'../dir/path1',
'../dir/path2'
];
####
..\somedir\path
$VAR1 = [
'..\\dir\\path1',
'..\\dir\\path2'
];
####
use strict;
use File::Spec::Functions;
my %root = (
MSWin32 => "C:\\Data",
solaris => "/var/data",
);
my $ROOTDIR = $root{$^O} or die "Unknown platform";
my $file1 = canonpath("$ROOTDIR/data.txt");
print "$file1\n";
my $file2 = canonpath("$ROOTDIR/../input/data2.txt");
print "$file2\n";
####
C:\Data\data.txt
C:\Data\..\input\data2.txt
####
/var/data/data.txt
/var/data/../input/data2.txt