# Construction d'un tableau (hash) à partir de texte
# Noms bicaméraux quelconques

use strict;
use warnings;

sub construire ($) { # nom de fichier -> hash
    my ($fich) = @_;
    open(ENTREE, "<utf8", $fich);

    my $formatNote = '^[01]\d|20$';
    my $formatNom = '^\p{Lu}\p{Ll}+(-\p{Lu}\p{Ll}+)?$';

    my %res;
    my $k = 0;
    my @tablignes = <ENTREE>;
    foreach my $ligne ( @tablignes ){
    	$k++;
        chomp($ligne); # supprime le "\n" final
        my ($le_nom, $la_note) = split( /\s+/, $ligne);
        if( $le_nom !~ m/$formatNom/ ){
            die("Erreur sur $le_nom, ligne $k");
        }
        if( $la_note !~ m/$formatNote/ ){
            die("Erreur sur la note de $le_nom, ligne $k");
        }
        $res{$le_nom} = $la_note;
    }
    return %res;
}# construire

sub TxtVersHash($){
    my ($fichIn) = @_;
    my %res = construire($fichIn);
    foreach my $k ( keys(%res) ) {
   		print "$k : $res{$k}\n";
   	}
}#TxtVersHash

binmode(STDOUT, ":utf8");
TxtVersHash($ARGV[0]);