#!/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