(perl) Lecture de données dans un fichier et tri

01: #!/usr/bin/perl
02: 
03: 
04: @p = ();                # Table de références à des points.
05: 
06: open(DAT,"xy.dat");     # Ouverture en lecture seule du fichier xy.dat
07: while (<DAT>) {         # Lecture ligne par ligne du fichier (handle DAT)
08:     chomp;              # Suppresion des blancs finaux, y compris le retour à la ligne
09:     s/^\s*//;           # Suppression des blancs initiaux (remplacement des blancs par rien...)
10:     my $r = {};         # Création d'une référence vide...
11:     ($r->{x},$r->{y}) = split /\s+/;  # Découpage de la ligne, le séparateur est une succession de blancs.
12:     push @p, $r;        # Ajout de $r à la table des points.
13: }
14: 
15: # Tri de la liste des points selon x.
16: @p = sort { $a->{x} <=> $b->{x} } @p;
17: 
18: # Construction des tables des x et y.
19: @xi = ();
20: @yi = ();
21: foreach (@p) {
22:     push @xi, $_->{x};
23:     push @yi, $_->{y};
24: }
25: 
26: # Affichage des tables pour le test.
27: print join(";",@xi),"\n";
28: print join(";",@yi),"\n";
29: 

Le fichier de données xy.dat puis les données lues et triées:

-3;-2;1;2;3;4;5
2;0.5;-1;-1;0;2;4

Fichier perl