Insert $! in your error strings when a Perl function fails.
Prefer low precedence or to ||; for example, prefer or die to || die.
Don't use a leading & when calling functions.
Avoid C-style for loops. For example, prefer for my $item (@arr) {...$item...} to for(my $I=0;$I<@ARR;$I++) {...$ARR[$I]...}.
Prefer my variables to our variables. Declare variables at point of first use (do not declare a huge bunch of variables at the top of a subroutine). Minimize variable scope. Avoid global variables.