Je suis un programmeur Perl débutant et je voudrais de l'aide. J'ai une liste de tableau que j'essaye de diviser chaque élément basé sur le tuyau en deux éléments scalaires. De là, je voudrais pointer uniquement les lignes qui lisent 'PJ RER Apts to Share' comme premier élément. Ensuite, je veux imprimer le deuxième élément une seule fois en comptant chaque fois que l'élément apparaît. J'ai écrit le code ci-dessous, mais je n'arrive pas à comprendre où je me trompe. Ce pourrait être quelque chose de petit que je ne fais que négliger. Toute aide serait grandement appréciée.Comment rechercher, compter et afficher des éléments uniques d'un tableau à l'aide de Perl?
## CODE ##
my @data = ('PJ RER Apts to Share|PROVIDENCE',
'PJ RER Apts to Share|JOHNSTON',
'PJ RER Apts to Share|JOHNSTON',
'PJ RER Apts to Share|JOHNSTON',
'PJ RER Condo|WEST WARWICK',
'PJ RER Condo|WARWICK');
foreach my $line (@data) {
$count = @data;
chomp($line);
@fields = split(/\|/,$line);
if (($fields[0] =~ /PJ RER Apts to Share/g)){
@array2 = $fields[1];
my %seen;
my @uniq = grep { ! $seen{$_}++ } @array2;
my $count2 = scalar(@uniq);
print "$array2[0] ($count2)","\n"
}
}
print "$count","\n";
## OUTPUT ##
PROVIDENCE (1)
JOHNSTON (1)
JOHNSTON (1)
JOHNSTON (1)
6
Est-ce que ce tri les champs ou il recrache les données dans un ordre aléatoire? – Luke
Si vous voulez trier, alors dites 'each (sort% $ v)' dans la dernière boucle 'while'. J'espère que cela aide! – Phil