in reply to Re^2: no exit! (return)
in thread no exit!

If the left side of && is false, the right side will never be executed. Compare:

This does not die...

errstr() && die if (1); sub errstr { return 0; }

This does:

if (1){ errstr(); die; } sub errstr { return 0; }