use File::Basename; use File::Path; ... my $nfile = ''; ... if (-e "$file" && $nfile ne "") { my $dir = dirname $nfile; if( !-d $dir ) { make_path($dir) or die "Can't create $dir: $!\n"; } $DEBUG && print qq{\n+++ cp "$file" "$nfile"}; $PRETEND || system("cp \"$file\" \"$nfile\""); $count++; }