Первое: вам действительно следует стараться не использовать устаревший синтаксис Perl и побочные эффекты.
Второе: ответ зависит от структуры данных, которую вы генерируете из входных данных. Вот два примера реализации:
#!/usr/bin/perl
use strict;
use warnings;
# 2D Array: list of array references
my @data = (
['Rafa', 'Nadal', 'Data1'],
['Goran', 'Ivan', 'Data2'],
['Leander', 'Paes', 'Data2'],
['Leander', 'Paes', 'Data2'],
);
my %seen;
foreach my $unique (
grep {
not $seen{
join('', @{ $_ })
}++
} @data
) {
print join(',', @{ $unique }), "\n";
}
print "\n";
# List of "objects", keys are table column names
@data = (
{ first => 'Rafa', last => 'Nadal', data => 'Data1' },
{ first => 'Goran', last => 'Ivan', data => 'Data2' },
{ first => 'Leander', last => 'Paes', data => 'Data2' },
{ first => 'Leander', last => 'Paes', data => 'Data2' },
);
%seen = ();
my @key_order = qw(first last data);
foreach my $unique (
grep {
not $seen{
join('', @{ $_ }{ @key_order } )
}++
} @data
) {
print join(',', @{ $unique }{ @key_order }), "\n";
}
Выход:
$ perl dummy.pl
Rafa,Nadal,Data1
Goran,Ivan,Data2
Leander,Paes,Data2
Rafa,Nadal,Data1
Goran,Ivan,Data2
Leander,Paes,Data2