BATsh
view release on metacpan or search on metacpan
lib/BATsh/Env.pm view on Meta::CPAN
# relative Unix path: prepend cwd
my $cwd = defined(&Cwd::cwd) ? Cwd::cwd() : '.';
$cwd =~ s{\\}{/}g;
$cwd =~ s{/+\z}{};
$path = "$cwd/$path";
}
# Ensure exactly one leading slash
$path = "/$path" unless $path =~ m{\A/};
# Collapse . and ..
my @segs;
for my $p (split m{/+}, $path) {
next if $p eq '' || $p eq '.';
if ($p eq '..') { pop @segs if @segs }
else { push @segs, $p }
}
$path = '/' . join('/', @segs);
$path = '/' if $path eq '/';
}
# --- split path into directory and filename ---
my ($dirs, $file) = ('', '');
( run in 0.414 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )