$abs_file = File::Spec->rel2abs( $_, $directory ); $canon_file = elimupdir( $abs_file ); sub elimupdir { my $foo = shift; my( $volume, $directories, $file ) = File::Spec->splitpath(File::Spec->canonpath( $foo )); my( @dur ) = File::Spec->splitdir( $directories ); my @dar; foreach(@dur){ if( $_ eq $updir ){ pop @dar; } else { push @dar, $_; } } return File::Spec->catpath( $volume, File::Spec->catdir( @dar ), $file ); }