in reply to Trouble with array of arrays

Actually, forget it. Changed line 37 to:

            if (@recordset[$i] && @recordset[$j] && (@recordset[$i]->[2] == @recordset[$j]->[2])){

Everything now working - spent ages looking at it and couldn't see the problem until a few minutes after posting a question.

Replies are listed 'Best First'.
Re^2: Trouble with array of arrays
by Eily (Monsignor) on Nov 17, 2014 at 12:31 UTC

    It may do what you want, because perl is often smart enough to guess what you meant and not what you said, but you are using the wrong sigils ($, @, %). $ means "one element" (scalar) and is the equivalent of the english "this", while @ means "several elements" (list, or array), and is the equivalent of the english "these". So when accessing one element from an array, you actually have to write $recordset[$i]. @recordset[$i] is actually a slice. perldata may be a good read. And you would have been warned about that if you had a use warnings; pragma at the top, and use strict; may seem bothersome, but there are very good reasons for the errors it yields, and it does help avoid mistakes.

    And you can omit the -> between to sets of [], so $recordset[$i]->[1] is exactly the same thing as $recordset[$i][1];

Re^2: Trouble with array of arrays
by choroba (Cardinal) on Nov 17, 2014 at 12:34 UTC
    You should turn on warnings and meditate on
    Scalar value @recordset[$i] better written as $recordset[$i]
    لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ