in reply to comparing multiple lines in an array.
#!/usr/bin/perl -w use strict; my %arr; my @AoA = ( [ "AAA", "BUY", "98", "0" ], [ "BBB", "SEL", "27", "1" ], [ "FFF", "BUY", "43", "4" ], [ "AAA", "SEL", "98", "0" ], [ "CCC", "SEL", "98", "0" ], ); #Walk through the array, for(my $i = 0; $i < scalar(@AoA); $i++) { # hashkey on items 0, 2 and 3. my $key = $AoA[$i][0] . $AoA[$i][2] . $AoA[$i][3]; # store item 1 in a list if(defined($arr{$key})) { my $lines = $arr{$key}; push(@$lines, $AoA[$i][1]); $arr{$key} = $lines; } else { my @lists = ($AoA[$i][1]); $arr{$key} = \@lists; } } #print out sames my @keys = keys %arr; foreach my $key (@keys) { my $options = $arr{$key}; print join(' ', @$options) . " with this info: $key \n"; }
I'm sure there are some optimizations that can be made, so if anybody sees anything, I would love to hear feedback.
Thanks
--
Ben
|
|---|