in reply to Eval block for routine error handling
If eval is too tricky or unwieldy then go for Try::Tiny (as recommended by Task::Kensho). Other modules in the Try::* space are available but I find that Try::Tiny fits my requirements well.