in reply to comparing multiple lines in an array.

The above solutions seem a bit complex for what you're doing. How about...

my %dups; $dups{ join('~',@$_[0,2,3]) }{$_->[1]}++ for @AoA;
The second line does all the work, storing duplicated keys into the hash. If any of the 0th, 2nd or 3rd array elements contain '~' you'll need to change the delimiter in the join method to avoid keying errors in %dups, but I'm guessing from your data that you're sticking to number and buy/sell directives.

Outputting the data is fairly trivial, and by the looks of things this code only has to pass through the array a single time. I'll leave the implementation details for homework...