in reply to how do i force a script to execute even when it encounters an error?
So change it toforeach my $file (@files){ ... mkdir(...) or die("..."); move(...) or die("..."); ... }
foreach my $file (@files){ ... mkdir(...) or do { warn("..."); next }; move(...) or do { warn("..."); next }; ... }
or
foreach my $file (@files){ if (!eval { ... mkdir(...) or die("..."); move(...) or die("..."); ... 1; }) { die("Error processing file $file: $@"); } }
Update: Better yet, use a sub!
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: $@"); } }
|
|---|