Comment supprimer des éléments dupliqués d’un tableau en Perl

Travailler avec des tableaux en programmation vous confronte souvent à un problème commun : comment gérer les valeurs dupliquées. Si vous êtes un programmeur Perl confronté à ce problème, vous pourriez ne pas savoir comment efficacement supprimer les éléments dupliqués d’un tableau.

Dans cet article, nous allons parcourir la technique spécifique pour éliminer les dupliqués d’un tableau en Perl, en vous fournissant une solution personnalisée ainsi qu’un aperçu des fonctions intégrées disponibles dans les versions plus récentes de Perl.

Comprendre le Problème

Considérons un exemple où vous avez le tableau suivant en Perl :

my @my_array = ("un", "deux", "trois", "deux", "trois");

Dans ce tableau, les valeurs “deux” et “trois” apparaissent plusieurs fois, le rendant candidat à la dé-duplication. L’objectif ici est de transformer ce tableau en une liste unique, en vous débarrassant essentiellement de ces doublons, afin que vous aboutissiez à :

un deux trois

Solution : Approche Personnalisée

Création d’une Fonction Unique

Une manière simple et efficace de supprimer les doublons est de créer une fonction personnalisée. Voici une fonction nommée uniq que vous pouvez utiliser :

sub uniq {
    my %seen;
    grep !$seen{$_}++, @_;
}

Décomposition de la Fonction

  1. %seen : C’est une table de hachage qui stockera les éléments comme clés. Les hachages en Perl n’autorisent que des clés uniques, ce qui les rend parfaits pour suivre les doublons.

  2. grep : Cette fonction itère sur la liste et évalue la condition. Ici, !$seen{$_}++ vérifie si l’élément courant ($_) a déjà été vu (c’est-à-dire existe dans %seen). S’il ne l’a pas été, il l’ajoute à la table de hachage et renvoie vrai, permettant à grep de garder cet élément dans la sortie.

Application de la Fonction

Vous pouvez appliquer la fonction à votre tableau comme suit :

my @array = qw(un deux trois deux trois);
my @filtered = uniq(@array);

print "@filtered\n"; # Cela imprime : un deux trois

Tester la Sortie

Après avoir exécuté ce code, votre sortie affichera le tableau filtré :

un deux trois

Cela démontre que les doublons ont été supprimés avec succès !

Utilisation des Fonctions Intégrées

Si vous utilisez Perl version 5.26.0 ou ultérieure, vous pouvez tirer parti des modules intégrés pour une solution plus universelle :

Module List::Util

La fonction uniq du module List::Util gère les doublons de manière efficace. Pour l’utiliser :

  1. Assurez-vous que votre version de Perl est à jour.
  2. Installez le module (si nécessaire).
  3. Utilisez uniq directement sur votre tableau.

Exemple :

use List::Util 'uniq';
my @array = qw(un deux trois deux trois);
my @filtered = uniq(@array);

print "@filtered\n"; # Cela imprime : un deux trois

Qu’est-ce qui rend Built-in Uniq Meilleur ?

  • Efficacité : Les fonctions intégrées sont généralement optimisées pour la performance.
  • Gestion des valeurs non définies : List::Util::uniq traite undef comme une valeur distincte.
  • Pas d’avertissements : Cette méthode ne générera pas d’avertissements liés aux valeurs dupliquées.

Conclusion

La suppression des éléments dupliqués d’un tableau en Perl peut être effectuée efficacement via une fonction personnalisée ou en profitant des capacités intégrées, en particulier avec List::Util. Quelle que soit la méthode que vous choisissez, vous pouvez vous assurer que le nettoyage de vos tableaux est simple et efficace. Maintenant, vous pouvez aborder les tableaux avec confiance !

Pratiquez ces techniques dans vos projets Perl pour affiner vos compétences !