X-Git-Url: https://git.llucax.com/z.facultad/75.08/llamadas.git/blobdiff_plain/1f8380816fd60992d974748abce727f015bb1b2a..9b06ed0dc331db549a7ddffd21501951d6208bda:/inst/antifraude.pl?ds=inline diff --git a/inst/antifraude.pl b/inst/antifraude.pl index 04d7fee..623475d 100644 --- a/inst/antifraude.pl +++ b/inst/antifraude.pl @@ -1,15 +1,38 @@ #!/usr/bin/perl +# Comparador de fecha para los archivos de llamada +sub byDate { + ($year1,$mon1,$day1,$hr1,$min1) = $a =~ /([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/; + ($year2,$mon2,$day2,$hr2,$min2) = $b =~ /([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/; + + # Descarto por año + if ($year1 > $year2) { return 1; } + elsif ($year1 < $year2) { return -1; } + + # Descarto por mes + if ($mon1 > $mon2) { return 1; } + elsif ($mon1 < $mon2) { return -1; } + + # Calculo minutos de lo restante + $totalmin1 = ($day1 * 24 * 60) + ($hr1 * 60) + $min1; + $totalmin2 = ($day2 * 24 * 60) + ($hr2 * 60) + $min2; + if ($totalmin1 > $totalmin2) { return 1; } + elsif ($totalmin1 < $totalmin2) { return -1; } + else { return 0; } +} + +# Devuelve un listado de archivos de llamada y ordenado por fecha ASC sub getCallFiles { # Obtengo listado de archivos de llamadas y lo ordeno por fecha opendir($DIR,$_[0]) or die 'Could not open dir'; # Valido solo fisicamente, lo logico ya valido afimonio.. @files = grep {/[0-9]{12}\.[0-9]{4}/ && -f "$ARGV[0]/$_" } readdir($DIR); - #@sortedfiles = sort bydate @files; // Do subroutine + @sortedfiles = sort byDate @files; closedir($DIR); - return @files; + return @sortedfiles; } +# --------- MAIN CODE -------- # # En la version final, recibo por param el directorio del .conf, por ahora # recibo un dir donde tengo archivos de llamadas @@ -20,5 +43,5 @@ if ((!$ARGV[0]) || (! -d $ARGV[0])) { @archivos = getCallFiles($ARGV[0]); foreach $callfile (@archivos) { - printf("Archivo de llamada: $callfile\n"); + print("Archivo de llamada: $callfile\n"); }