It's acceptable. I recommend using
die() and documenting that this can happen and under exactly what circumstances, so that whoever is re-using your code isn't left scratching their head when it happens. And more importantly, so that they can, by calling your sub in an
eval, catch your
die and deal with it more gracefully if they need to.
You'll also want to catch and examine those dies in your tests.