Hasta ahora mis pocos mensajes en el foro han sido para pedir ayuda.. en este caso una pequeña aportación de una función para leer variables desde un fichero de configuración. Las variables tienen que estar en formato tipico VARIABLE=valor y separadas por lineas.
Using perl Syntax Highlighting
sub read_config {
my $file = shift;
my %conf;
open(CONF, "$file") or die "ERROR file \"$file\" not found!\n";
while (<CONF>) {
# Borramos las lineas que empiezan por comentario #
s/^(\s)*#.*//;
# Ignorar las lineas en blanco
next if /^(\s)*$/;
# Eliminar el caracter \n del final
chomp;
# Dividir la linea en variable y valor
($var, $value) = split("=", $_);
# Pasamos a mayusculas el nombre de la variable
$var =~ tr/[a-z]/[A-Z]/;
# Si el valor empieza y acaba por comillas dobles las eliminanos
$value =~ s/^\"(.+)\"$/$1/;
# Metemos los datos en un array asociativo
$conf{$var} = $value;
}
close(CONF);
return (%conf);
}
my $file = shift;
my %conf;
open(CONF, "$file") or die "ERROR file \"$file\" not found!\n";
while (<CONF>) {
# Borramos las lineas que empiezan por comentario #
s/^(\s)*#.*//;
# Ignorar las lineas en blanco
next if /^(\s)*$/;
# Eliminar el caracter \n del final
chomp;
# Dividir la linea en variable y valor
($var, $value) = split("=", $_);
# Pasamos a mayusculas el nombre de la variable
$var =~ tr/[a-z]/[A-Z]/;
# Si el valor empieza y acaba por comillas dobles las eliminanos
$value =~ s/^\"(.+)\"$/$1/;
# Metemos los datos en un array asociativo
$conf{$var} = $value;
}
close(CONF);
return (%conf);
}
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4
Alguna vez he usado usado algún módulo CPAN (Config::IniHash) para hacer esto mismo, pero finalmente me he decido a hacer una pequeña función para algo tan simple como esto.
Luego para acceder a los datos de las variables es muy sencillo, por ejemplo:
Using perl Syntax Highlighting
my %conf = &read_config("/etc/pruebas.conf");
print "PRUEBAS_VARIABLE = $conf{'PRUEBAS_VARIABLE'}\n";
print "PRUEBAS_VARIABLE = $conf{'PRUEBAS_VARIABLE'}\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Espero que a alguien le sea de utilidad.. si tienes cualquier sugerencia/critica para mejorarlo siempre es bienvenida
Saludos,