use warnings; use strict; my $path="d:/temp/f1/f2/"; my $path_so_far; my @parts = split("/", $path); foreach my $part (@parts) { $path_so_far .= $part ."/"; if ( !(-e $path_so_far) ) { mkdir($path_so_far) || die "not able to mkdir $path_so_far: $!"; } }