# Bajo licencia GPL.
#
# Uso:
-# ./gencall.pl [cant_archivos [min_lineas [max_lineas]]]
+# ./callgen [cant_archivos [min_lineas [max_lineas]]]
#
# cant_archivos Cantidad de archivos a generar.
+# min_lines Mínima cantidad de líneas que puede tener un archivo.
+# max_lines Máxima cantidad de líneas que puede tener un archivo.
#
+# Por la entrada estándar debe recibir los códigos de países para origen y/o
+# destino. Toma los dos primeros caracteres por línea como un código, ignorando
+# el resto, de manera que se puede hacer:
+# cat oridesti.txt | ./gencall
# Configuración
$CANT_ARCHS=10;
$MIN_LINEAS=1000;
$MAX_LINEAS=5000;
+#{{{ Variables globales
+our @codes; # Códigos de origen/destino
+#}}}
+
#{{{ Funciones
+#{{{ load_codes() - Obtiene códigos de origen/destino de la entrada estándar
+# Uso: load_codes()
+sub load_codes()
+{
+ while (<>)
+ {
+ ;
+ push(@codes, substr($_, 0, 2));
+ }
+}
+#}}}
+
+#{{{ get_rnd_code() - Obtiene un códigos de origen/destino al azar
+# Uso: get_rnd_code()
+sub get_rnd_code()
+{
+ my $cant = @codes;
+ return $codes[rnd($cant-1)];
+}
+#}}}
+
#{{{ rnd() - Genera números aleatorios
# Uso: rnd(MAX) - genera número de 0 a MAX (inclusive)
# rnd(MIN, MAX) - genera número de MIN a MAX (inclusive)
if (rnd(1) == 1)
{
$f_tipo = 'E';
- $f_orig = char().char();
+ $f_orig = get_rnd_code();
}
else
{
$f_tipo = 'S';
- $f_dest = char().char();
+ $f_dest = get_rnd_code();
}
my $f_prest = char().char().char().char().char().char().char().char().char();
return "$f_linea;$f_minutos;$f_fecha;$f_hora;$f_tipo;$f_dest;$f_orig;$f_prest";
#}}}
#{{{ gen() - Genera un archivo con entre MIN y MAX llamadas
-# Uso: gen MIN MAX
+# Uso: gen(MIN, MAX)
sub gen($$)
{
my ($ini, $fin) = @_;
#{{{ Programa
srand;
my $cant = $ARGV[0] ? $ARGV[0] : $CANT_ARCHS;
+load_codes();
for (my $i = 0; $i < $cant; ++$i)
{
gen($ARGV[1] ? $ARGV[1] : $MIN_LINEAS, $ARGV[2] ? $ARGV[2] : $MAX_LINEAS);