#!/usr/local/bin/perl -w #Autor: W. Luis Mochán use strict; #campos conteo my $cCD='#TIME_STAMP|ID_ESTADO|DISTRITO|SECCION|ID_CASILLA|TIPO_CASILLA|EXT_CONTIGUA|TIPO_CANDIDATURA|TIPO_ACTA|LISTA_NOMINAL|NO_VOTOS_NULOS|NO_VOTOS_CAN_NREG|NO_VOTOS_VALIDOS|TOTAL_VOTOS|ORDEN|PAN|APM|PBT|NA|ASDC|MUNICIPIO|PAQUETE_ENTREGADO|CASILLA_INSTALADA|FECHA_HORA'; my @cCD=split /\|/, $cCD; my $i=0; my %cCD; foreach(@cCD){ $cCD{$_}=$i++; } #campos prep my $cPREP='ESTADO|DISTRITO|SECCION|CASILLA|UBICACION_CASILLA|TIPO_ACTA|BOLETAS_RECIBIDAS|BOLETAS_SOBRANTES|NUMERO_VOTANTES|BOLETAS_DEPOSITADAS|PAN|ALIANZA_POR_MEXICO|POR_EL_BIEN_DE_TODOS|NUEVA_ALIANZA|ALTERNATIVA_SOCIAL_DEMOCRATA|NO_REGISTRADOS|NULOS|LISTA_NOMINAL|TIMESTAMP_REGISTRO|HORA_REGISTRO'; my @cPREP=split /\|/, $cPREP; $i=0; my %cPREP; foreach(@cPREP){ $cPREP{$_}=$i++; } open(CD, "< remcd.txt") or die "No pude abrir remcd.txt: $!"; open(PREP, "< remprep.txt") or die "No pude abrir remprep.txt: $!"; #inicializa #Procesa encabezados my $dCD=; my $dPREP=; print $dCD; print $dPREP; #primer renglon de datos $dCD=; $dPREP=; while(1){ last unless $dCD or $dPREP; my $cdvsprep=compara($dCD, $dPREP); if($cdvsprep == -1){ # print "$dCD"; $dCD=; next; } if($cdvsprep == 1){ # print "$dPREP"; $dPREP=; next; } if($cdvsprep == 0){ print $dCD; print $dPREP; $dCD=; $dPREP=; next; } die "Que hago aqui?"; } sub compara { my ($cd, $prep)=@_; return 0 unless $cd or $prep; return -1 unless $prep; #se acabo prep y sigue cd return 1 unless $cd; #se acabo cd y sigue prep my @fcd=split /\s+/, $cd; my @fprep=split /\|/, $prep; my $r=$fcd[$cCD{ID_ESTADO}] <=> $fprep[$cPREP{ESTADO}]; return $r if $r; $r=$fcd[$cCD{DISTRITO}] <=> $fprep[$cPREP{DISTRITO}]; return $r if $r; $r=$fcd[$cCD{SECCION}] <=> $fprep[$cPREP{SECCION}]; return $r if $r; my $casilla=$fprep[$cPREP{CASILLA}]; $casilla=~s/(B|C|E|S)// or die "Casilla rara en $prep"; my $tipo=$1; my ($id, $ext); if($tipo eq 'B'){ ($id,$ext)=(1,0); }else{ $casilla=~s/(\d\d)// or die "Casilla rara en $prep"; $id=$1; if($casilla=~s/C(\d\d)//){ $ext=$1; }else{ $ext=0; } } $r=$fcd[$cCD{TIPO_CASILLA}] cmp $tipo; return $r if $r; $r=$fcd[$cCD{ID_CASILLA}] <=> $id; return $r if $r; $r=$fcd[$cCD{EXT_CONTIGUA}] <=> $ext; return $r if $r; }