more best practices: lexical filehandles, explicit return, ...

always unpack @_ first