You need to look at the discussions of die() and warn() and the %SIG hash. You can set up your own handlers for errors (via die) using $SIG{__DIE__} = sub { ... } and for warnings (via warn) using $SIG{__WARN__} = sub { ... }. See the
perlvar and
perlfunc manpages. You can also run code that you think might die inside an eval { } construction and keep your program from dying.
#!/usr/bin/perl -w
use strict;
$SIG{__DIE__} = sub { die("My error: ", @_); };
$SIG{__WARN__} = sub { warn("My warning: ", @_); };
warn("some warning");
die("aarggh!");