in reply to die and subroutine combo

You could just use a simple do e.g
open(TMPFILE,"<datafile.txt") or do { mysub(); die "Cant open: $!" };
Or if you want it performed across the board you could create a die signal handler e.g
$SIB{__DIE__} = sub { mysub(); die @_ };
See. the die docs for more info.
HTH

_________
broquaint