3 # Generador aleatorio de archivos de llamadas
5 # Leandro Lucarella - dom oct 17 18:37:05 ART 2004
10 # ./gencall.pl [cant_archivos [min_lineas [max_lineas]]]
12 # cant_archivos Cantidad de archivos a generar.
22 #{{{ rnd() - Genera números aleatorios
23 # Uso: rnd(MAX) - genera número de 0 a MAX (inclusive)
24 # rnd(MIN, MAX) - genera número de MIN a MAX (inclusive)
26 # Nota: respeta el tamaño del campo más chico, es decir, si se usa rnd 01 250,
27 # el número siempre tendrá al menos 2 dígitos rellenados con ceros, como
28 # 04, 28, 123, 08, etc
37 return sprintf('%0'.length($ini).'d', $ini + rand() * ($fin - $ini + 1));
42 sub aaaa() { return rnd(1999, 2004); } # año
43 sub mm() { return rnd("01", 12); } # mes
44 sub dd() { return rnd("01", 28); } # día
45 sub hh() { return rnd("00", 23); } # hora
46 sub MM() { return rnd("00", 59); } # minutos
47 sub DDDD() { return rnd("0000", 9999); } # código de central telefónica
48 sub char() { return chr(rnd(65, 90)); } # caracter aleatorio
51 #{{{ line() - Genera una línea del archivo
54 my $f_linea = rnd(100000, 99999999);
55 my $f_minutos = rnd(1, 150);
56 my $f_fecha = aaaa().mm().dd();
57 my $f_hora = dd().hh().MM();
58 my ($f_tipo, $f_orig, $f_dest) = ('', '', '');
62 $f_orig = char().char();
67 $f_dest = char().char();
69 my $f_prest = char().char().char().char().char().char().char().char().char();
70 return "$f_linea;$f_minutos;$f_fecha;$f_hora;$f_tipo;$f_dest;$f_orig;$f_prest";
74 #{{{ gen() - Genera un archivo con entre MIN y MAX llamadas
79 my $file = aaaa().mm().dd().hh().MM().'.'.DDDD();
80 # Mientras exista uno, buscamos un nuevo nombre.
81 $file = aaaa().mm().dd().hh().MM().'.'.DDDD() while (-e $file);
82 open(FH, ">$file") or die("No puedo abrir el archivo $file!\n");
83 for (my $i = rnd($ini, $fin); $i > 0; --$i)
94 my $cant = $ARGV[0] ? $ARGV[0] : $CANT_ARCHS;
95 for (my $i = 0; $i < $cant; ++$i)
97 gen($ARGV[1] ? $ARGV[1] : $MIN_LINEAS, $ARGV[2] ? $ARGV[2] : $MAX_LINEAS);
101 # vim: set fdm=marker ts=4 sw=4 :