in reply to Detecting read errors whilst reading from a network drive
In general yes you'll get an error. The error will be pretty much similar to the one if you had a read error on a local drive. You should try using or die $!; if you want the reasons for the error to be output. At least then your 'die' is a little informative.
If you want the bells and whistles version you could drop the below into your code and call it with dying($!) instead. If you don't want the bells remove the 'sound' related lines I appended with ##>> and if you don't want the error message brutally forced to the front of all your other applications remove the 'win32Util' lines that I appended with ##%%
Happy travels! :-)
Dean
The Funkster of Mirth
Programming these days takes more than a lone avenger with a compiler. - sam
RFC1149: A Standard for the Transmission of IP Datagrams on Avian Carriers
If you want the bells and whistles version you could drop the below into your code and call it with dying($!) instead. If you don't want the bells remove the 'sound' related lines I appended with ##>> and if you don't want the error message brutally forced to the front of all your other applications remove the 'win32Util' lines that I appended with ##%%
Happy travels! :-)
## put into the top of your main code ## Show fatal error dialog sub dying { my ($error) = @_; use Tk; use Win32::Sound; ##>> use Win32Util; ##%% if (!$error) { $error = "(none given)"; } my $text; $text .= "\n\nError:\n\n$error"; my $box = new MainWindow(-title => "Error", -bg => 'yellow', -bd => 4, -relief => 'ridge'); $box->overrideredirect(1); my $label = $box->Label( -textvariable=> \$text, -bg=> 'yellow', )->pack(-fill=>'both', -padx => 40, ); Win32::Sound::Play('SystemExclamation'); ##>> my $ok = $box->Button(-text => "OK", -command => [ sub{print STDOUT "User selected 'OK' + on error message\n"; $box->destroy; exit; } ] )->pack(-padx => 20, -pady => 20 ); $box->withdraw; $box->Popup; Win32Util::keep_on_top($box, 1); ##%% MainLoop; }
Dean
The Funkster of Mirth
Programming these days takes more than a lone avenger with a compiler. - sam
RFC1149: A Standard for the Transmission of IP Datagrams on Avian Carriers
In Section
Seekers of Perl Wisdom