« Programmation Perl/Fonctions sur listes » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 260 :
=== sort : ordonne une liste ===
<source lang="perl">
#!/usr/bin/perl -w
use strict;
use warnings;
 
my @tableau = qw(9 -.2 -4 34 -7 0 111);
# tri implicitement alphabétique
my @tri = sort @tableau;
foreachprint my $k ("@tri){print $k." \n"};# -.2 -4 -7 0 111 34 9
print "\n";
 
# tri explicitement alphabétique
@tri = sort ({$a cmp $b} @tableau);
foreachprint my $k ("@tri){print $k." \n"};# -.2 -4 -7 0 111 34 9
print "\n";
 
# tri inverse alphabétique
@tri = sort ({$b cmp $a} @tableau); # autre syntaxe : @tri = reverse sort @tableau;
foreachprint my $k ("@tri){print $k." \n"};# 9 34 111 0 -7 -4 -.2
print "\n";
 
# tri explicitement numérique
@tri = sort ({$a <=> $b} @tableau);
foreachprint my $k ("@tri){print $k." \n"};# -7 -4 -.2 0 9 34 111
print "\n";
 
# tri inverse numérique
@tri = sort ({$b <=> $a} @tableau);
foreachprint my $k ("@tri){print $k." \n"};# 111 34 9 0 -.2 -4 -7
print "\n";
 
# tris tarabiscotés sans intérêt autre que montrer les possibilités de "sort"
Ligne 293 ⟶ 289 :
@tableau = qw(3 1 6 5 3 1 6 5);
# tri croissant sur une moitié, décroissant sur l‘autre
my $moitie = scalar @tableau / 2; # scalar est facultatif : my $... = environnement scalaire
@tri = ((sort ({$a <=> $b} splice (@tableau,0,4$moitie))),(sort ({$b <=> $a} splice (@tableau,-4$moitie,4$moitie))));
foreach my $k (@tri){print $k." "};# 1 3 5 6 6 5 3 1
print "@tri\n";# 1 3 5 6 6 5 3 1
 
@tableau = qw(9 -.2 -4 -14 -7 0 11);
# tri aux normes croissantes
@tri = sort ({abs $a <=> abs $b} @tableau);
foreachprint my $k ("@tri){print $k." \n"};# 0 -.2 -4 -7 9 11 -14
print "\n";
 
@tableau = qw(ab a abcd abc abcde);
# tri aux longueurs décroissantes
@tri = sort ({length $b <=> length $a} @tableau);
foreachprint my $k ("@tri){print $k." \n"};# abcde abcd abc ab a
print "\n";
</source>