eval { uploader( $dir, $name ) }; print "There was a problem uploading your file: $@" if ( $@ ); sub uploader { my ($upload_dir, $filename) = @_; ... open UPLOADFILE, ">$upload_dir/$filename" or die "Open for output failed on $upload_dir/$filename: $!"; ... print UPLOADFILE ... or die "Output failed on $upload_dir/$filename: $!"; ... close UPLOADFILE or die "Unable to close $upload_dir/$filename: $!"; ... }