in reply to comprehensive error handling

Use either simple parens and a single expression:
open (...) or ($errormsg = $!, $status = -1);
or expressify a block using do:
open (...) or do { $errormsg = $!; $status = -1; }

Makeshifts last the longest.