#!/usr/bin/perl -- use Path::Class; my $fi = file( $ENV{TEMP}, 'notexist' ); my @fo = $fi; do { unshift @fo, $fi = $fi->parent; } while $fi ne $fi->parent; print $_,$/ for @fo; __END__ / /some /some/where /some/where/over /some/where/over/temp /some/where/over/temp/notexist