foreach my $file (@files){ ... mkdir(...) or die("..."); move(...) or die("..."); ... } #### foreach my $file (@files){ ... mkdir(...) or do { warn("..."); next }; move(...) or do { warn("..."); next }; ... } #### foreach my $file (@files){ if (!eval { ... mkdir(...) or die("..."); move(...) or die("..."); ... 1; }) { die("Error processing file $file: $@"); } } #### sub process_file { my ($file) = @_; ... mkdir(...) or die("..."); move(...) or die("..."); ... } foreach my $file (@files){ if (!eval { process_file($file); 1 }) { die("Error processing file $file: $@"); } }