Skip to content.
Script > EstrazioneVisureCamerali > EstrazioneVisureCamerali02Versione

#!/usr/bin/perl

=head1 NAME

analizza - Questo programma si occupa di analizzare le visure camerali 
in formato testo estratte via web dal CERVED, processarle e raccogliere 
i dati in formato CSV. Il programma originale faceva il match con alcuni 
dati forniti da una soc esterna ma... per motivi di privacy si č ritenuto 
non necessario includere tutto lo script.

=head1 Synopsis

analizza.pl

=head1 Descrizione

Un operatore estrae una o piu' visure camerali dal sito del CERVED 
e le salva in una unica cartella in formato testo tramite un copia/incolla 
sul notepad con estensione TXT.
A questo punto basta riporre il file analizza.pl nella medesima directory 
e a quel punto lanciare il programma.
Verrā generato un file CSV con i dati cercati.

=cut


use strict;
use Tie::File;

=pod

=head1 Richiede

B<Perl 5.004>, ed i moduli 
I<strict, Tie::File>

=head1 Esporta

Di default nulla ma genera un file chiamato esame.csv da passare poi 
ad un eventuale call-center.

=cut


#File di output e' dove vengono riposti tutti i dati
my $output="esame.csv";

#####################################################################
#
#   INIZIO SCRIPT
#
#####################################################################

## ATTENZIONE: Eventulmente e' possibile anche abilitare la DataIscrizione, 
# SezioneOrdinaria e RepertorioEconomico decommentando le righe con un 
simbolo # ad inizio riga successive che non contengono commenti ma pezzi di codice


#Variabile che immagazzina il contatore dei files
my $files=1;

opendir(DIR,"./") || die "Non riesco a leggere la directory : $!";
my @files=readdir(DIR);
sort (@files);
open(LOG,">$output");

print LOG "CODFISC;PIVA;REGISTRO IMPRESE;DENOMINAZIONE;FORMA GIURIDICA;CITTA;CAP;PROV;INDIRIZZO;NOME1;RES1;COD1;NOME2;RES2;COD2;NOME3;RES3;COD3\n";
foreach my $file (@files){
        my $CodiceFiscale;
        my $PartitaIva;
        my $RegistroImprese;
        #   my $DataIscrizione;
        #   my $SezioneOrdinaria;
        #   my $RepertorioEconomico;
        my $Denominazione;
        my $FormaGiuridica;
        my $Citta;
        my $Provincia;
        my $Indirizzo;
        my $Cap;
        my @nome;
        my $candidato=0;
        my $controllo=1;
        
        if($file=~/\.txt/){
                open FILE,$file or die "Non posso aprire il file: $!";
                $files++;
                
                while(my $riga=<FILE>){         
                        if($riga=~/REGISTRO DEI REVISORI CONTABILI/){
                                $controllo=0;
                        }
                        
                        
                        if($controllo and $riga=~/Codice Fiscale e Numero d'Iscrizione: (.+)$/){
                                $CodiceFiscale=$1;
                                $CodiceFiscale='\''.$CodiceFiscale;
                        }
                        if($controllo and $riga=~/^Partita Iva: (\d+)$/){
                                $PartitaIva=$1;
                                $PartitaIva='\''.$PartitaIva;
                        }      
                        if($controllo and $riga=~/del Registro delle Imprese di: (.+)$/){
                                $RegistroImprese=$1;
                        }
                        #         if($controllo and $riga=~/Data di Iscrizione: (\d\d\/\d\d\/\d\d\d\d)$/){
                        #            $DataIscrizione=$1;
                        #         }
                        #         if($controllo and $riga=~/Iscritta nella Sezione Ordinaria    il: (\d\d\/\d\d\/\d\d\d\d)/){
                        #            $SezioneOrdinaria=$1;
                        #         }
                        #         if($controllo and $riga=~/Iscritta con il numero Repertorio Economico Amministrativo: ([^ ]+)/){
                        #            $RepertorioEconomico=$1;
                        #            $RepertorioEconomico='\''.$RepertorioEconomico;            
                        #         }      
                        if($controllo and $riga=~/Denominazione: (.+)$/){
                                $Denominazione=$1;
                        }
                        if($controllo and $riga=~/Forma Giuridica: (.+)$/){
                                $FormaGiuridica=$1;
                        }
                        if($controllo and $riga=~/      Sede: (.+) (\(\w\w\)) (.+?) CAP (\d\d\d\d\d)$/){
                                $Citta=$1;
                                $Provincia=$2;
                                $Indirizzo=$3;
                                $Cap=$4;
                                $Cap='\''.$Cap;
                        }
                        if($controllo and $riga=~/      Fraz\.:\s+(.+)$/){
                                $Citta=$Citta." Fraz. ".$1;
                        }
                        if($controllo and $riga=~/^\d+\) (.+)$/){
                                $nome[$candidato]->{nome}=$1;
                        }
                        if($controllo and  $riga=~/^Nat[o|a]\s+a: (.+)$/){
                                $nome[$candidato]->{nato}=$1;
                        }
                        if($controllo and $riga=~/^Codice Fiscale: (.+)$/){
                                $nome[$candidato]->{cod}=$1;
                        }
                        if($controllo and $riga=~/^Residente\s+a: (.+)$/){
                                $nome[$candidato]->{residente}=$1;
                                $candidato++;
                        }
                }
                close FILE;
                
                #Nel caso non abbia trovato la partita iva la valorizzo con il codice fiscale.
                $PartitaIva=$CodiceFiscale unless($PartitaIva);
                
                print LOG "$PartitaIva;$CodiceFiscale;$RegistroImprese;";
                #      print LOG "$DataIscrizione;$SezioneOrdinaria;$RepertorioEconomico;";
                print LOG "$Denominazione;$FormaGiuridica;$Citta;$Cap;$Provincia;$Indirizzo;";
                
                foreach my $nome (@nome){
                        print LOG "$nome->{nome};$nome->{nato};$nome->{cod};$nome->{residente};";
                        
                }
                print LOG "\n";
        }
}


__END__

-- VittorioZuccala - 16 Feb 2005


Ultima versione: r1.1 - 15 Feb 2005 - 11:26 - Main.guest
 
Se riconosciuto dal sistema come utente: Main.guest