trapping an error is easy:
eval {
# your code to be trapped
# ... or die "error message 123"
}
if ($@) {
# do your error checking, such as $@=~/error message 123/
}
As was announced perl6 will change "eval{BLOCK}" to "try{BLOCK}" when it is used for trapping an error, to be more consistent.
It is interesting though to have a possibility to check whether writting is currently performing.
I think it is somewhere in IO::* modules (may be in IO::Handle), but unfortunately can not help with this right now.
Have a nice day,
Weasel.