sort -
ordene numéricamente un conjunto de ficheros
numéricos (para ello use la opción
-g de sort ) produciendo como salida un unico fichero
ordenado.
El granjero mezclará los vectores ordenados (opción -m de sort)
devueltos por los trabajadores.
El código muestra una posible versión de la función de
combinación:
sub combineFunction {
$_[0] = `echo -n '$_[1]' | sort -m -g - /tmp/sorted.dat`;
open(SORTED, ">/tmp/sorted.dat");
print SORTED $_[0];
close(SORTED);
}
En una primera versión puede asumir - si lo desea - un sistema de archivos
compartido. Realice una segunda versión en la que
no asuma la existencia de NFS:
el fichero o vector a ordenar deberá ser transferido
al disco del trabajador. Para ello amplíe farm con la capacidad
de transferir los ficheros de un directorio local a directorios remotos.
Haga perldoc -f rand para obtener información sobre la función de
generación aleatoria de números. El siguiente programa puede
ser usado para generar los datos:
!/usr/bin/perl -w
# Ej:
# create_data.pl 5 data/data 500 5 6 7 8 9
use strict;
my $numFich = shift || 3;
my $prefix = shift || 'data';
my $max_val = shift || 10000;
die "Uso: $0 num_fich prefijo Max len1 len2 ... lenN\n" unless (@ARGV == $numFich);
{
local $" = "\n";
for(my $i = 0; $i < $numFich; $i++){
my @nums = map { int (rand($max_val)) } 1..shift;
open F,"> $prefix$i.dat";
print F "@nums";
close(F);
}
}
Casiano Rodríguez León
