next up previous contents
suivant: Montrer la différence entre monter: Les accès aux fichier précédent: Purger un répertoire des   Table des matières

Maintenir un tableau trié en permanence

Perl propose la fonction sort() qui permet de trier des données à un instant donné pour un besoin voulu, pourtant, dans le cas d'un index par exemple, il peut être utile de maintenir de façon permanente un tableau donné selon une méthode de tri donnée.

C'est ce que propose le module Tie::Array::Sorted en garantissant que tous les élément insérés ou retrouvés avec les commandes qui permettent de traiter un tableau resteront dans l'ordre voulu. Il faut bien comprendre que pour que cela fonctionne, il faut utiliser les commandes et non insérer un élément directement en fournissant l'index d'entrée.

L'exemple qui suit prend sur STDIN des données alpha-numériques et les affiches dans l'ordre toutes les quatres lignes :

use Tie::Array::Sorted;

my @list;
tie(@list,'Tie::Array::Sorted',sub{$_[0] cmp $_[1]});

while(1) {
        for(my $i = 0; $i < 4; $i++) {
                my $value = <STDIN>;
                chomp($value);
                push(@list,$value);
        }
        while(my $line = shift(@list)) {
                print $line ."\n";
        }
}



2006-03-15