http://www.perlmonks.org?node_id=459442


in reply to Re: return undef
in thread return undef

Another useful feature of raising exceptions is that you can pass along the actual error message, which makes debugging much easier.
open $fh, ">$filename" or die "could not open '$filename' for writing: $! "
Also, if you do not write code to catch the exception, your program will terminate with a more meaningful message than "Use of uninitialized value at ... ".