Progetto:Diocesi/convertidiocesi

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

Questo è lo script usato per le diocesi, produce vari errori. consideratelo pubblico dominio. Esistono ovviamente modi migliori di scriverlo, ma poiché non si trattava di software che avrebbe dovuto essere capito da altri... Potete comunque chiedermi lumi se volete --Riccardo 03:07, 10 set 2006 (CEST)[rispondi]

Come argomento prende un file html scaricato da http://www.catholic-hierarchy.org/, output su standard output, per scrivere su file si usi la redirezione dell'output ( > file, o >> file per aggiungere ad un file esistente)

#!/usr/bin/perl
use strict;

# il bot pywikipedia pagefromfile.py richiede dei separatori ad inizio e fine pagina; questi sono i separatori di default
my $startmarker = "{{-start-}}";
my $endmarker = "{{-stop-}}";

# nome del file html scaricato da www.catholic-hierarchy.org
my $n = $ARGV[0];

# inserisce in $s la sigla della diocesi; si tratta di quattro lettere usate per indicarla all'interno di catholic-hierarchy, nei link e nei nomi. Questo metodo assume che il nome del file sia lo stesso presente nel sito
$n =~ m/.*(\w\w\w\w).html/;
my $s = $1;

# messaggio di debug
print STDERR "parse diocesi $s from file $n\n";

# inserisce il contenuto dell'intero file html in $buf
my $buf = read_entire_file($n);
# decommentare la riga successiva per ricevere in output il file letto; può essere utile per avere la conferma che lo script stia leggendo i dati corretti
# print STDERR "file letto:\n$buf\n";


# gran parte delle righe seguenti consistono nella lettura di campi dal file html immagazzinato in $buf; 
# la sintassi m/ /; è match di una espressione regolare, identifica la prima occorrenza più lunga del testo 
# tra le due barre / ed inserisce in $1 la il contenuto del testo identificato dalla prima parentesi (in $2 la seconda, ecc) 

#nome inglese della diocesi
$buf =~ m/<h1 align=center>(.+)<\/h1>/;
my $enname = $1;
$enname =~ s/ \{.+\}//;
$enname =~ s/ ([^ ]+) \[(.+)\]/ \2/;

#elimina l'aggettivo {(Syriac), (Maronite), ...} presente in varie diocesi orientali
my $attributo = "";
if ($enname =~ m/ \(.+\)/)
{
    $enname =~ m/ \((.+)\)/;
    $attributo = " ".translate_attributo($1);
    $enname =~ s/ \((.+)\)//;
}

#nome
$enname =~ m/[\w ]+ of (.+)/;
my $name = $1;
#nome latino
$buf =~ m/<h3 align=center><i>(.+)<\/i><\/h3><hr>/;
my $latname = $1;
#print STDERR "di: $name\nlatino: $latname\n";


#vescovo
#<h3 align=center>Bishop.s.<\/h3>\n<ul>\n
$buf =~ m/<li><a href="\/bishop\/b.+.html">(.+)<\/b><\/a>.*<b>, (.+)<\/b>/;
my $bishop = $1;
my $titolo = translate_titolo($2);
$bishop =~ s/<b>//;
my $linkvescovo = "[[$bishop]]";
#print STDERR "$titolo: $bishop\n";
if ($buf !~ m/<li><a href="\/bishop\/b.+.html">(.+)<\/b><\/a>.*<b>, (.+)<\/b>/)
{
    $bishop = "nessuno";
    $linkvescovo = "''sede vacante''";
    $titolo = "vescovo";
}

#emeriti
$buf =~ m/<li><a href="\/bishop\/b.+.html">(.+)<\/b><\/a>, (.+) Emeritus/;
my $emerito = $1;
$emerito =~ s/<b>//;
if ($buf !~ m/<li><a href="\/bishop\/b.+.html">(.+)<\/b><\/a>, (.+) Emeritus/)
{
    $emerito = "";
}
#print STDERR "emerito: $emerito\n";

#tipo
$buf =~ m/<li>Type of Jurisdiction: ([\w ]+)/;
my $cat = translate_cat($1);
#print STDERR "tipo: $cat\n";

#eretta
my $eretta;
if ($buf =~ m/<li>Erected: <a href="\/events\/day.....html">\d+ \w+<\/a> <a href="\/events\/d\d+.html">\d+<\/a>/)
{
    $buf =~ m/<li>Erected: <a href="\/events\/day.....html">(.+) (.+)<\/a> <a href="\/events\/d\d+.html">(.+)<\/a>/;
    $eretta = "[[$1 ".translate_mese($2)."]] [[$3]]";
} else {
    if ($buf =~ m/<li>Erected: <a href="\/events\/day0000.html"><\/a> <a href="\/events\/d\d+.html">\d+<\/a>/)
    {
        $buf =~ m/<li>Erected: <a href="\/events\/day0000.html"><\/a> <a href="\/events\/d\d+.html">(.+)<\/a>/;
        $eretta = "[[$1|$1 d.C.]]";
    } else {
        if ($buf =~ m/<li>Erected: <a href="\/events\/d\d+.html">\d+\w\w Century<\/a>/)
        {
            $buf =~ m/<li>Erected: <a href="\/events\/d\d+.html">(\d+)\w\w Century<\/a>/;
            $eretta = "[[".translate_number_to_roman($1)." secolo|".translate_number_to_roman($1)." secolo d.C.]]";
        }
    }
}
#print STDERR "eretta: $eretta\n";

#conferenza
my $regione = "";
if ($buf =~ m/<li>Conference Region/)
{
    $buf =~ m/<li>Conference Region: <a href="\/country\/\w+.html">(.+)<\/a>/;
    $regione = $1;
}

#metropolitana
my $metro = "";
if ($buf =~ m/<li>Metropolitan:/) 
{
    $buf =~ m/<li>Metropolitan: (\w+) of <a href="d\w\w\w\w.html">(.+)<\/a>/;
    $metro = translate_cat($1)." di ".$2;
    $metro =~ s/ \{.+\}//g;
    $metro =~ s/ ([^ ]+) \[(.+)\]/ \2/;
    #print STDERR "metropolitana: $metro\n";
}

if ($buf =~ m/<li>Metropolitan See/)
{
    $titolo = "metropolita";
}

#suffraganee
my $suffraganee = "";
if ($buf =~ m/<a name="suff">Suffragans<\/a>/)
{
    $suffraganee = read_suffraganee($n);
    $metro = "";
}

#rito
$buf =~ m/<li>Rite: (.+)/;
my $rito = translate_rito($1);
#print STDERR "rito: $rito\n";

#stato
$buf =~ m/<li>State: (.+)/;
my $enstate = $1;
#print STDERR "stato: $enstate\n";

#nazione
my $nazione ="IGNOTA";
if ($buf =~ m/<li>Country: <a href="\/country\/\w\w.html">.+<\/a>/)
{
    $buf =~ m/<li>Country: <a href="\/country\/\w\w.html">(.+)<\/a>/;
    $nazione = translate_nazione($1);
} else {
    $buf =~ m/<li>Country: (.+)/;
    $nazione = translate_nazione($1);
}

#Catholic Directory Abbreviation: 
$buf =~ m/<li>Catholic Directory Abbreviation: (.+)/;
my $abbreviazione = $1;
#print STDERR "abbreviazione: $abbreviazione\n";

#sito
my $sito = "";
if ($buf =~ m/<li>Official Web Site:/)
{
    $buf =~ m/<li>Official Web Site: <a href="http:\/\/(.+)\/">/;
    $sito = $1;
} else {
    if ($buf =~ m/<li>Web Site:/)
    {
        $buf =~ m/<li>Web Site: <a href="http:\/\/(.+)\/">/;
        $sito = $1;
    }
}

#email
my $email = "";


#indirizzo, telefono e fax
my $telefono = "";
my $fax = "";
my $indirizzo = "";
if ($buf =~ m/<li>Mailing Address:/)
{
    $buf =~ m/<li>Mailing Address: (.+)/;
    $indirizzo = $1;
}
if ($buf =~ m/<li>Telephone:/ )
{
    $buf =~ m/<li>Telephone: (.+)/;
    $telefono = $1;
}
if ($buf =~ m/<li>Fax:/)
{
    $buf =~ m/<li>Fax: (.+)/;
    $fax = $1;
}

#chilometri
$buf =~ m/<li>Square Kilometers: (.+) \(/;
my $superficie = $1;
#print STDERR "superficie (km2): $superficie\n";

#anno dell'ap di riferimento
my $annoi = 2006;
my $anno = "$annoi";
while ($buf !~ m/ap$anno/ && ($annoi>1940))
{
    $annoi--;
    $anno = "$annoi";
}
#print STDERR " year $anno\n";

#statistiche recenti
$buf =~ m/<tr align=center><td>(\d\d\d\d)<\/td><td>([\d\,]*)<td>([\d\,]*)<td>([\d\.]*)%*<\/td><td>([\d\,]*)<td>([\d\,]*)<td>([\d\,]*)<\/td><td>([\d\,]*)<\/td><td>([\d\,]*)<td>([\d\,]*)<td>([\d\,]*)<td>([\d\,]*)<td>ap$anno<\/td><\/tr>/;
my $annoref = $1;
my $battezzati = translate_numero($2);
my $popolazione = translate_numero($3);
my $percentuale = translate_numero($4);
my $sacerdotisecolari = translate_numero($5);
my $sacerdotiregolari = translate_numero($6);
my $sacerdoti = translate_numero($7);
my $percentualesacerdoti = translate_numero($8); 
my $diaconi = translate_numero($9);
my $religiosi = translate_numero($10);
my $religiose = translate_numero($11);
my $parrocchie = translate_numero($12);

#tabella statistica
#my @anni = (1951, 1960, 1971, 1981, 1991, 2000, 2001, 2002, 2003, 2004, 2005);
#my @chiavi = ("anno","battezzati","popolazione","percentuale","sacerdotisecolari","sacerdotiregolari","sacerdoti","percentualesacerdoti","diaconi","religiosi","religiose","parroci");

my $categorie = "";

my $resulthead = "$startmarker\n";
#my $resulthead = "=$cat di $name=\n\n";

my $nome = $cat." di "."[[".$name."]]";
$nome =~ s/-/]]-[[/g;

my $resultinizio =     
    "{{stub diocesi}}\n".
    "{{avviso diocesi}}\n".
    "{{diocesi della chiesa cattolica\n".
    "|nome=$nome\n".
    "|latino=$latname\n".
    "|titolo=$titolo\n".
    "|titolare=$linkvescovo\n".
    "|emeriti=$emerito\n".
    "|vicario=\n".
    "|stato=$nazione\n".
    "|ritoliturgico=[[rito $rito|$rito]]\n".
    "|eretta=$eretta\n".
    "|stemma=\n".
    "|mappa=\n".
    "|mappacollocazione=\n".
    "|mappaprovincia=\n";

if ($metro =~ m/../)
{
    $resultinizio .= "|suffraganeadi=[[$metro]]\n";
#    $categorie .= "[[Categoria:Metropolia di $metro]]\n";
}

if ($suffraganee =~ m/../)
{
    $resultinizio .= "|suffraganee=$suffraganee\n";
#    $categorie .= "[[Categoria:Arcidiocesi metropolitane cattoliche|$name]]\n";
#    $categorie .= "[[Categoria:Metropolia di $metro]]\n";
}

if ($regione =~ m/../)
{
    $resultinizio .= "|regione=[[Regione ecclesiastica $regione|$regione]]\n";
}

my $resultdata = 
    "|battezzati=$battezzati\n".
    "|popolazione=$popolazione\n".
    "|proporzione=$percentuale\n".
    "|sacerdotisecolari=$sacerdotisecolari\n".
    "|sacerdotiregolari=$sacerdotiregolari\n".
    "|sacerdoti=$sacerdoti\n".
    "|battezzatipersacerdote=$percentualesacerdoti\n".
    "|diaconi=$diaconi\n".
    "|religiosi=$religiosi\n".
    "|religiose=$religiose\n".
    "|vicariati=\n".
    "|parrocchie=$parrocchie\n";

my $resultmezzo =
    "|superficie=$superficie\n".
    "|indirizzo=$indirizzo\n".
    "|telefono=$telefono\n".
    "|fax=$fax\n".
    "|sito=$sito\n".
    "|email=$email\n".
    "|anno=$anno\n".
    "|ch=$s\n".
    "}}\n";

my $plainnome = $nome;
$plainnome =~ s/[\[\]]+//g;

my $resultfine = "\n".
    "La '''$plainnome''' (in [[lingua latina|latino]]: ''$latname'') è una sede ";

if ($metro =~ m/../)
{
    $resultfine .= "della [[Chiesa cattolica]] suffraganea dell'[[$metro]]";
}

if ($suffraganee =~ m/../)
{
    $resultfine .= "metropolitana della [[Chiesa cattolica]]";
}

if ($regione =~ m/../)
{
    $resultfine .= " appartenente alla [[regione ecclesiastica]] [[regione ecclesiastica $regione|$regione]]"
}

$resultfine .= ". È stata costituita il $eretta e nel [[$annoref]] contava $battezzati battezzati su $popolazione abitanti. È attualmente retta ".scrivi_titolo($titolo)." [[$bishop]].\n";


#if ($attributo =~ m/../)
#{
#    $resultfine .= " di [[rito $rito]]";
#}

my $citta = $nome;
$citta =~ s/.+ di //;

$resultfine .= "\n==Territorio==\n".
    "La diocesi comprende la città di $citta.\nIl territorio è suddiviso in $parrocchie parrocchie.\n";

$resultfine .= "\n==Storia==\n";

$resultfine .= "\n==Serie dei vescovi==\n".read_ordinari($n)."\n";

#$resultfine .= "\n==Vescovi associati==\n".read_affiliati($n)."\n";


$resultfine .= "\n==Statistiche==\n".
    "La diocesi al termine dell'anno $annoref su una popolazione di $popolazione persone contava $battezzati battezzati, corrispondenti al ".$percentuale."% del totale.\n".
    read_statistiche($n)."\n";

$resultfine .= "\n==Fonti==\n*[[Annuario pontificio]] del $anno e precedenti, riportati su [http://www.catholic-hierarchy.org www.catholic-hierarchy.org] alla pagina [http://www.catholic-hierarchy.org/diocese/d$s.html]\n";

if ($sito =~ /../) 
{
    $resultfine .= "*[http://$sito Sito ufficiale] della diocesi\n";
}

#$categorie .= "[[Categoria:Diocesi cattoliche di rito $rito|$name]]\n";

my $nomecitta = $citta;
$nomecitta =~ s/[\[\]]//g;

$resultfine .= "\n\n\n".
    "[[Categoria:Diocesi cattoliche in $nazione|$nomecitta]]\n$categorie\n<!--***[[en:$enname]]***-->\n";

my $resulttrail ="\n$endmarker\n";
#my $resulttrail ="\n\n\n";

my $result = $resulthead.$resultinizio.$resultdata.$resultmezzo.$resultfine.$resulttrail;

##print STDERR "writing:\n".$resultinizio.$resultmezzo.$resultfine."\n\nnow writing to file...\n";

$result = fix_result($result);

print $result;


sub translate_cat
{
    $_ = $_[0];
  SWITCH: {
      if (/Diocese/) { return "diocesi"; }
      if (/Archdiocese/) { return "arcidiocesi"; }
      if (/Suburbicarian See/) { return "sede suburbicaria"; }
      if (/Archeparchy/) { return "arcieparchia"; }
      if (/Eparchy/) { return "eparchia"; }
      if (/Apostolic Exarchate/) { return "esarcato apostolico"; }
      if (/Prefecture Apostolic/) { return "prefettura apostolica"; }
      if (/Territorial Prelature/) { return "prelatura territoriale"; }
      if (/Territorial Abbey/) { return "abbazia territoriale"; }
      return $_;
    }
}

sub translate_numero
{
    my $n = $_[0];
    $n =~ tr/,./.,/;
    return $n;
}

sub translate_mese
{
    $_ = $_[0];
  SWITCH: {
      if (/Jan/) { return "gennaio"; }
      if (/Feb/) { return "febbraio"; }
      if (/Mar/) { return "marzo"; }
      if (/Apr/) { return "aprile"; }
      if (/May/) { return "maggio"; }
      if (/Jun/) { return "giugno"; }
      if (/Jul/) { return "luglio"; }
      if (/Aug/) { return "agosto"; }
      if (/Sep/) { return "settembre"; }
      if (/Oct/) { return "ottobre"; }
      if (/Nov/) { return "novembre"; }
      if (/Dec/) { return "dicembre"; }
      return $_;
    }
}

sub translate_nazione
{
    $_ = $_[0];
  SWITCH: {
      if (/Belgium/) { return "Belgio"; }
      if (/Brazil/) { return "Brasile"; }
      if (/Chile/) { return "Cile"; }
      if (/Taiwan/) { return "Taiwan"; }
      if (/China/) { return "Cina"; }
      if (/Côte d'Ivoire/) { return "Costa d'Avorio"; }
      if (/Czech Republic/) { return "Repubblica Ceca"; }
      if (/Egypt/) { return "Egitto"; }
      if (/Ethiopia/) { return "Etiopia"; }
      if (/France/) { return "Francia"; }
      if (/Germany/) { return "Germania"; }
      if (/Greece/) { return "Grecia"; }
      if (/Haïti/) { return "Haiti"; }
      if (/Iran,/) { return "Iran"; }
      if (/Ireland/) { return "Irlanda"; }
      if (/Israel/) { return "Istraele"; }
      if (/Italy/) { return "Italia"; }
      if (/Korea, Republic of/) { return "Corea del Sud"; }
      if (/Lebanon/) { return "Libano"; }
      if (/México/) { return "Messico"; }
      if (/Morocco,/) { return "Marocco"; }
      if (/Moldova,/) { return "Moldavia"; }
      if (/Mozambique/) { return "Mozambico"; }
      if (/New Zealand/) { return "Nuova Zelanda"; }
      if (/Papua New Guinea/) { return "Papua Nuova Guinea"; }
      if (/Peru/) { return "Perù"; }
      if (/Philippines/) { return "Filippine"; }
      if (/Portugal/) { return "Portogallo"; }
      if (/Puerto Rico/) { return "Porto Rico"; }
      if (/Syrian/) { return "Siria"; }
      if (/Spain/) { return "Spagna"; }
      if (/Solomon Islands/) { return "Isole Salomone"; }
      if (/South Africa/) { return "Sudafrica"; }
      if (/Switzerland/) { return "Svizzera"; }
      if (/Tanzania,/) { return "Tanzania"; }
      if (/Thailand/) { return "Tailandia"; }
      if (/Rwanda/) { return "Ruanda"; }
      if (/Saint Lucia/) { return "Santa Lucia"; }
      if (/Turkey/) { return "Turchia"; }
      if (/Monaco/) { return "Principato di Monaco"; }
      if (/United States of America/) { return "Stati Uniti"; }
      if (/Viêt Nam/) { return "Vietnam"; }
      if (/Serbia and Montenegro/) { return "Serbia"; }
      if (/Congo, The Democratic Republic of/) { return "Repubblica Democratica del Congo"; }
      if (/Lao People's Democratic Republic/) { return "Laos"; }
      if (/Dominican Republic/) { return "Repubblica Dominicana"; }
      if (/Central African Republic/) { return "Repubblica Centrafricana"; }
      if (/Macedonia,/) { return "Macedonia"; }
      if (/Slovakia/) { return "Slovacchia"; }
      if (/American Samoa/) { return "Samoa"; }
      if (/Scotland/) { return "Scozia"; }
      if (/Poland/) { return "Polonia"; }
      if (/Croatia/) { return "Croazia"; }
      if (/Ukraine/) { return "Ucraina"; }
      if (/Trinidad and Tobago/) { return "Trinidad e Tobago"; }
      if (/Ukrainian/) { return "Ucraina"; }
      if (/Virgin Islands/) { return "Stati Uniti"; }
      if (/Western Sahara/) { return "Sahara Occidentale"; }
      if (/Saint Pierre and Miquelon/) { return "Francia"; }
      if (/Saint Vincent and Grenadines/) { return "Saint Vincent e Grenadine"; }
      if (/Palestinian Territory, Occupied/) { return "Territori palestinesi"; }
      if (/New Caledonia/) { return "Francia"; }
      if (/Netherlands/) { return "Paesi Bassi"; }
      if (/Netherlands Antilles/) { return "Antille Olandesi"; }
      if (/Martinique/) { return "Francia"; }
      if (/Marshall Islands/) { return "Isole Marshall"; }
      if (/Luxembourg/) { return "Lussemburgo"; }
      if (/Lithuania/) { return "Lituania"; }
      if (/Libyan Arab Jamahiriya/) { return "Libia"; }
      if (/Japan/) { return "Giappone"; }
      if (/Jamaica/) { return "Giamaica"; }
      if (/Hungary/) { return "Ungheria"; }
      if (/Guadeloupe/) { return "Francia"; }
      if (/Falkland Islands/) { return "Inghilterra"; }
      if (/Equatorial Guinea/) { return "Guinea Equatoriale"; }
      if (/East Timor/) { return "Timor Est"; }
      if (/Djibouti/) { return "Gibuti"; }
      if (/Denmark/) { return "Danimarca"; }
      if (/Cook Islands/) { return "Nuova Zelanda"; }
      if (/Chad/) { return "Ciad"; }
      if (/Brunei Darussalam/) { return "Brunei"; }
      if (/Bosnia and Herzegovina/) { return "Bosnia Erzegovina"; }
      if (/French Guyana/) { return "Francia"; }
      if (/French Polynesia/) { return "Francia"; }
      if (/Gibraltar/) { return "Gibilterra"; }
      if (/Iceland/) { return "Groenlandia"; }
      if (/Northern Mariana Islands/) { return "Stati Uniti"; }
      if (/England/) { return "Inghilterra"; }
      if (/Wales/) { return "Galles"; }
      if (/Wallis and Futuna/) { return "Francia"; }
      if (/Finland/) { return "Finlandia"; }
      if (/India/) { return "India"; }
      if (/Albania/) { return "Albania"; }
      if (/Kazakhstan/) { return "Kazakistan"; }
      if (/Cambodia/) { return "Cambogia"; }
      if (/Cameroon/) { return "Camerun"; }
      if (/Russian Federation/) { return "Russia"; }
      if (/Latvia/) { return "Lettonia"; }
      if (/Belarus/) { return "Bielorussia"; }
      if (/Canada/) { return "Canada"; }
#      if (//) { return ""; }
      return $_;
    }
}

sub translate_rito
{
    $_ = $_[0];
  SWITCH: {
      if (/Roman/) { return "romano"; }
      if (/Chaldean/) { return "caldeo"; }
      if (/Melkite/) { return "melchita"; }
      if (/Armenian/) { return "armeno"; }
      if (/Syro-Malabarese/) { return "siro-malabarese"; }
      if (/Ukrainian/) { return "ucraino"; }
      if (/Ruthenian/) { return "ruteno"; }
      if (/Coptic/) { return "copto"; }
      if (/Ethiopian/) { return "etiope"; }
      if (/Romanian/) { return "rumeno"; }
      if (/Byzantine/) { return "bizantino"; }
      return $_;
    }
}

sub translate_attributo
{
    $_ = translate_rito($_[0]);
    $_ =~ s/o$/a/;
    return $_;
}

sub translate_titolo
{
    $_ = $_[0];
  SWITCH: {
      if (/Patriarch/) { return "patriarca"; }
      if (/Cardinal/) { return "cardinale"; }
      if (/Archbishop/) { return "arcivescovo"; }
      if (/Bishop/) { return "vescovo"; }
      if (/Abbot/) { return "abate"; }
      if (/Prelate/) { return "prelato"; }
      if (/Vicar Apostolic/) { return "vicario"; }
      if (/Apostolic Administrator/) { return "amministratore"; }
      return $_;
    }
}

sub translate_number_to_roman
{
    $_ = $_[0];
  SWITCH: {
      if (/^10/) { return "X"; }
      if (/^11/) { return "XI"; }
      if (/^12/) { return "XII"; }
      if (/^13/) { return "XIII"; }
      if (/^14/) { return "XIV"; }
      if (/^15/) { return "XV"; }
      if (/^16/) { return "XVI"; }
      if (/^17/) { return "XVII"; }
      if (/^18/) { return "XVIII"; }
      if (/^19/) { return "XIX"; }
      if (/^20/) { return "XX"; }
      if (/^1/) { return "I"; }
      if (/^2/) { return "II"; }
      if (/^3/) { return "III"; }
      if (/^4/) { return "IV"; }
      if (/^5/) { return "V"; }
      if (/^6/) { return "VI"; }
      if (/^7/) { return "VII"; }
      if (/^8/) { return "VIII"; }
      if (/^9/) { return "IX"; }
      return $_;
    }
}

sub read_entire_file
{
    open(INPUTFILE, "<$_[0]");
    my $holdTerminator = $/;
    undef $/;
    my $file = <INPUTFILE>;
    close(INPUTFILE);
    $/ = $holdTerminator;
    return $file;
}

sub read_suffraganee
{
    open (INFILE, "<$n");
    while (<INFILE>)
    {
        my $line = $_;
        if ($line =~ m/<a name="suff">Suffragans<\/a>/)
        {
            my $suffraganee = "";
            while (<INFILE>)
            {
                $line = $_;
                if ($line =~ m/href="d\w\w\w\w.html"/)
                {
                    $line =~ m/<a href="d\w\w\w\w.html">(.+)<\/a>/;
                    my $nomedio = "$1";
                    $nomedio =~ s/([^ ]+) \[(.+)\]/\2/;
                    $suffraganee .= "[[Diocesi di $nomedio|$nomedio]] ";
                }
                if ($line =~ m/<hr width/)
                {
                    close (INFILE);
                    return $suffraganee;
                }
            }
        }
    }
    close (INFILE);
    return "";
}


sub read_ordinari
{
    open (INFILE, "<$n");
    my $ordinari = "";
    while (<INFILE>)
    {
        my $line = $_;
        if ($line =~ m/<h2 align=center><a name="former">Ordinaries<\/a><\/h2>/)
        {
            while (<INFILE>)
            {
                $line = $_;
                if ($line =~ m/<li>/)
                {
                    chomp($line);
                    $line =~ s/<a href="\/bishop\/b\w+.html">//;
                    $line =~ s/<\/b>//;
                    $line =~ s/<b>//g;
                    $line =~ s/<li>//g;
                    $line =~ s/<\/a>//g;
                    $line =~ s/<a href="\/events\/b\w+.html">//g;
                    $line =~ s/†/†/;
                    $line =~ s/Died/deceduto/;
                    $line =~ s/Retired/ritirato/;
                    $line =~ s/Appointed//; # nominato
                    $line =~ s/Resigned/dimesso/;
                    $line =~ s/Succeeded/succeduto/;
                    $line =~ s/Installed/insediato/;
                    $line =~ s/Ordained/ordinato/;

                    if ($line =~ m/Appointed/)
                    {
                        $line =~ s/of <a href="d\w\w\w\w.html">/di [[diocesi di /;
                        $line =~ s/diocesi di ([^ ]+) \[(.+)\]/diocesi di \2/;
                        $line =~ s/diocesi di ([^\)]+)/diocesi di \1|\1]]/;
                        $line =~ s/, Patriarch/ patriarca/;
                        $line =~ s/, Cardinal/ cardinale/;
                        $line =~ s/, Archbishop/ arcivescovo/;
                        $line =~ s/, Bishop/ vescovo/;
                        $line =~ s/, Apostolic Administrator/amministratore apostolico/;
                    }

                    $line =~ s/Appointed/promosso/;

                    $line =~ s/Elected, Pope \(<a href="droma.html">Roma \{Rome\}\)/eletto [[papa]]/;

                    $line =~ s/(\d+ [A-Z]\w\w) (\d+)/[[$1]] [[$2]]/g;

                    while ($line =~ m/\[\[\d+ ([A-Z]\w\w)\]\]/)
                    {
                        my $enmese = $1;
                        my $mese = translate_mese($enmese);
                        $line =~ s/$enmese/$mese/;
                    }
                    
                    $line = trans_sigle_vescovo($line);

                    $ordinari .= "\n* $line";
                }
                if ($line =~ m/<\/ul>/)
                {
                    close (INFILE);
                    return $ordinari."\n";
                }
            }
        }
    }
    close (INFILE);
    return $ordinari;
}



sub read_statistiche
{
    open (INFILE, "<$n");
    my $statistiche = "{{tabella dati diocesi}}\n";
    while (<INFILE>)
    {
        my $line = $_;
        if ($line =~ m/<h2 align=center><a name="stats">Statistics<\/a><\/h2>/)
        {
            while (<INFILE>)
            {
                $line = $_;
                if ($line =~ m/<tr align=center><td>\d\d\d\d/)
                {
                    $line =~ m/<tr align=center><td>(\d\d\d\d)<\/td><td>([\d\,]*)<td>([\d\,]*)<td>([\d\.]*)%*<\/td><td>([\d\,]*)<td>([\d\,]*)<td>([\d\,]*)<\/td><td>([\d,]*)<\/td><td>([\d\,]*)<td>([\d\,]*)<td>([\d\,]*)<td>([\d\,]*)<td>ap\d\d\d\d<\/td><\/tr>/;
                    my $annoref = $1;
                    my $battezzati = translate_numero($2);
                    my $popolazione = translate_numero($3);
                    my $percentuale = translate_numero($4);
                    my $sacerdotisecolari = translate_numero($5);
                    my $sacerdotiregolari = translate_numero($6);
                    my $sacerdoti = translate_numero($7);
                    my $percentualesacerdoti = translate_numero($8); 
                    my $diaconi = translate_numero($9);
                    my $religiose = translate_numero($11);
                    my $parrocchie = translate_numero($12);
                    my $religiosi = translate_numero($10);
                    
                    $statistiche .= "|-\n| $annoref || $battezzati || $popolazione || $percentuale".
                        " || $sacerdoti || $sacerdotisecolari || $sacerdotiregolari".
                        " || $percentualesacerdoti || $diaconi || $religiosi || $religiose || $parrocchie\n";
                }
                if ($line =~ m/<\/ul>/)
                {
                    close (INFILE);
                    return $statistiche."|}";
                }
            }
        }
    }
    close (INFILE);
    return $statistiche."|}";
}




sub trans_sigle_vescovo
{
    my $sigla = $_[0];
    $sigla =~ m/(, [\w\. ]+) [†\(]/;
    $sigla =~ s/$1//;
#     $sigla =~ s/B\.C\.//;
#     $sigla =~ s/C\.I\.M\.//;
#     $sigla =~ s/C\.M\.//;
#     $sigla =~ s/C\.S\.C\.//;
#     $sigla =~ s/C\.S\.Sp\.//;
#     $sigla =~ s/C\.SS\.R\.//;
#     $sigla =~ s/I\.C\.//;
#     $sigla =~ s/M\. Afr\.//;
#     $sigla =~ s/M\.E\.P\.//;
#     $sigla =~ s/O\.F\.M\.//;
#     $sigla =~ s/O\.F\.M\. Cap\.//;
#     $sigla =~ s/O\.P\.//;
#     $sigla =~ s/O\.S\.B\.//;
#     $sigla =~ s/O\.S\.C\.//;
#     $sigla =~ s/S\.D\.B\.//;
#     $sigla =~ s/S\.D\.S\.//;
#     $sigla =~ s/S\.M\.A\.//;
#     $sigla =~ s/S\.P\.S\.//;
#     $sigla =~ s/S\.X\.//;
#     $sigla =~ s/S\.V\.D\.//;
    return $sigla;
}

sub read_nomi_ordinari
{
    open (INFILE, "<$n");
    my $ordinari = "";
    while (<INFILE>)
    {
        my $line = $_;
        if ($line =~ m/<h2 align=center><a name="former">Ordinaries<\/a><\/h2>/)
        {
            while (<INFILE>)
            {
                $line = $_;
                if ($line =~ m/<li>/)
                {
                    $line =~ m/<a href="\/bishop\/b\w+.html">(.+)<\/b>/;
                    $ordinari .= trans_sigle_vescovo($1);
                }
                if ($line =~ m/<\/ul>/)
                {
                    goto terminenomiordinari;
                }
            }
        }
    }
terminenomiordinari:
    close (INFILE);
#    $ordinari =~ s/<b>//g;
    return $ordinari;
}


sub scrivi_titolo
{
    $_ = $_[0];
 SWITCH: {
     if (/^metropolita/) { return "dall'[[arcivescovo]]"; }
     if (/^arcivescovo/) { return "dall'[[arcivescovo]]"; }
     if (/^patriarca/) { return "dal [[patriarca (cristianesimo)|patriarca]]"; }
     if (/^vescovo/) { return "dal [[vescovo]]"; }
     if (/^cardinale/) { return "dall'[[arcivescovo]] [[cardinale (cattolicesimo)|cardinale]]"; }
    }
    return "dal vescovo";
}

sub fix_result
{
    my $s = $_[0];
    $s =~ s/arcivescovo di \[\[diocesi/arcivescovo di [[arcidiocesi/g;
    $s =~ s/Coadjutor Archbishop di \[\[diocesi/[[vescovo coadiutore|arcivescovo coadiutore]] di [[arcidiocesi/g;
    $s =~ s/Coadjutor Bishop/[[vescovo coadiutore|vescovo coadiutore]]/g;
    $s =~ s/arcivescovo coadiutore\]\] di \[\[diocesi/arcivescovo coadiutore]] di [[arcidiocesi/g;
    $s =~ s/\|\| ,/|| 0,/g;
    $s =~ s/ \(Personal Title\)/, come titolo personale,/g;
    $s =~ s/\{[a-zA-Z ]+\}\]\]/\]\]/g;
    $s =~ s/\{[a-zA-Z ]+\}\|/|/g;
    $s =~ s/  -/ -/g;
    $s =~ s/Titular Bishop/vescovo titolare/g;
    $s =~ s/Titular Archbishop/arcivescovo titolare/g;
    $s =~ s/La \'\'\'arci/L<nowiki>'<\/nowiki>'''arci/g;
    $s =~ s/dell\'\[\[diocesi/della [[diocesi/g;
    $s =~ s/proporzione=,/proporzione=0,/;
    $s =~ s/corrispondenti al ,/corrispondenti allo 0,/;
    $s =~ s/La \'\'\'Vicariate Apostolic/Il '''vicariato apostolico/;
    $s =~ s/Vicariate Apostolic/vicariato apostolico/g;
    $s =~ s/Territorial prelature/prelatura territoriale/g;
    $s =~ s/La \'\'\'Apostolic Administration/L<nowiki>'<\/nowiki>'''amministrazione apostolica/;
    $s =~ s/La \'\'\'([aAeE])/L<nowiki>'<\/nowiki>'''\1/;
    $s =~ s/Apostolic Administration/amministrazione apostolica/g;
    $s =~ s/Prefecture Apostolic/prefettura apostolica/g;
    $s =~ s/Categoria:Diocesi cattoliche in Stati Uniti/Categoria:Diocesi cattoliche negli Stati Uniti d'America/g;
    $s =~ s/Categoria:Diocesi cattoliche in Filippine/Categoria:Diocesi cattoliche nelle Filippine/g;
    $s =~ s/è una sede . È/è una sede della [[Chiesa cattolica]] immediatamente soggetta alla [[Santa Sede]]. È/g;
    $s =~ s/in Repubblica Democratica del Congo/nella Repubblica Democratica del Congo/g;
    return $s;
}