foreach my $file (@files){ ...#perform parsing and lookup from database to determine where to place the file. if (!-e $dir){ mkdir(...) or die("..."); } move(...) or die("..."); ... } sub on_error(){ ##call a batch file }