in reply to Crypt::CBC and error trapping
use English '-no_match_vars'; [download]
and then later in place of @$ use $EVAL_ERROR.
It so happens that you've mistyped a punctuation variable, but rather than just retype it I'm suggesting use English.