use File::Spec; my $dir_parent = do { my ($vol, $dir, $file) = File::Spec->splitpath( File::Spec->rel2abs(__FILE__) ); # Go up 1 directory my @dirs = File::Spec->splitdir($dir); pop @dirs while (@dirs > 1 && $dirs[-1] eq ''); # Clean up pop @dirs if @dirs > 1; # Go up 1 real directory. $dir = File::Spec->catdir(@dirs); File::Spec->catpath($vol, $dir); };