Welcome to autovivification. I've fried myself quite a few times on this as well.
Even if those reference-array entries $row->[0] and $row->[1] didn't exist before with your original code, they do exist (and are undef) after that code runs. The subsequent code is not likely to appreciate this.
To test whether $row->[0] and $row->[1] are defined without risking autovivification, use something like
if (defined($row) and defined($row->[0]) and defined($row->[1]) { # .... }The first clause tests for whether the $row variable is defined. If that variable is defined, we proceed to test whether the 0 and 1 entries of the referenced array are defined. This also prevents being flummoxed by 0 (which is Perl-false).
Of course, do this before you start using $row->[0] and $row->[1]. After that, it's too late.
In reply to Re: Trapping a warning
by zaimoni
in thread Trapping a warning
by blackjudas
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |