Ejemplo de Ordenación

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
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19