!/usr/bin/perl use strict; use warnings; my $somepath = "/var/log/../../home/poletti/../../etc/passwd"; my( @true ); foreach( split( /\//, $somepath ) ) { $_ eq ".." ? pop( @true ) : push( @true, $_ ); } print join( '/', @true ), "\n";