Catégories

Charger un tableau associatif depuis un fichier en Perl

Vous faites des scripts Perl, et vous trouvez pratique l’organisation des tableaux associatifs (%hash) pour gérer de la configuration ?

Voici un moyen simple et rapide de gérer cette configuration dans un fichier externe, sans avoir à indiquer le nom de votre tableau associatif dans ce fichier.

Créez votre fichier de configuration en respectant la syntaxe Perl, par exemple :

service1 => {
    servers => [ 'server1', 'server2' ],
    tcp_port => 80,
    protocol => 'http',
},
service2 => {
    servers => [ 'server3', 'server4' ],
    tcp_port => 21,
    protocol => 'ftp',
},

Dans votre script Perl, chargez ce fichier de configuration de la manière suivante:

my $config = 'test.conf';
my %CONFIG;

eval '%CONFIG = ( ' . `cat $config` . ')';
die "Error while loading configuration file: $@n" if $@;

Vous pouvez alors utiliser les éléments de configuration en utilisant:

# Affichage du protocol de "service1"
print $CONFIG{'service1'}{'protocol'} . "n";

# Affichage du 2ème serveur de "service2"
print @{$CONFIG{'service2'}{'servers'}}[1] . "n";

# Affichage de protocole:tcp_port, puis de la liste des serveurs pour tous les services
foreach my $service (sort keys %CONFIG) {
    print $CONFIG{$service}{'protocol'} . ":" . $CONFIG{$service}{'tcp_port'} . "n";
    foreach my $server (@{$CONFIG{$service}{'servers'}}) {
        print $server . "n";
    }
}

Faire un commentaire

 

 

 

Vous pouvez utiliser ces tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre user="" computer="" escaped="">