El siguiente ejemplo ordena los usuarios de un sistema unix atendiendo a su
uid:
lhp@nereida:~/projects/perl/src$ cat -n sortperuid.pl
1 #!/usr/bin/perl -w
2 use strict;
3 my @user = grep { $_ !~ /^#/ } `cat /etc/passwd`;
4 my (@name, @uid, $x);
5
6 for (my $i=0; $i < @user; $i++) {
7 ($name[$i], $x, $uid[$i]) = split ':', $user[$i];
8 }
9
10 @name = @name[
11 sort {$uid[$a] <=> $uid[$b]} 0..$#name
12 ];
13
14 local $" = "\n";
15 print "@name\n";
En la línea 3 se obtiene en @user la lísta de líneas
no comentadas en /etc/passwd.
en las líneas 6-8 se inicializan los arrays @name
y @uid a los nombres (login) y uid de los usuarios
(campos primero y tercero de /etc/passwd).
Las líneas 10-12 ordenan primero la lista 0..$#name de acuerdo con el
valor de uid. El nuevo conjunto ordenado de índices es utilizado para
reindexar el array name.
El operador sort en un contexto escalar devuelve undef.
Casiano Rodríguez León
