| Basicos - Funciones imprescindibles para la vida moderna |
_extract_fields()_union_hash()Basicos - Funciones imprescindibles para la vida moderna
use Basicos qw(:DEFAULT);
=head1 DESCRIPTION
Este paquete incluye todas las pequeñas funciones que acarreamos de un lado a otro y que no arrastran a módulos mayores y desconocidos en el programa.
sub my_function {
my $ref_hash = normalize_hash(@_);
...
}
La función _normalize_hash toma una lista de parámetros e intenta
transformarlo en una referencia a un hash.
Si recibe una lista con un único elemento, construye un hash con él como valor y una clave denominada 'UNIQUE'.
Si recibe una referencia a un hash, la retorna sin más.
En caso contrario asume que es una lista de N elementos y construye una referencia a un hash y la devuelve.
_extract_fields()
my %data = (
campo1 => '1',
campo2 => 'hola',
campo3 => 0.90
);
my @values = _extract_fields( \%data, qw(campo3 campo1 campo4) );
_union_hash()
my %c = _union_hash(\%a, \%b);
my $ref_c = _union_hash(\%a, \%b);
=cut
sub _union_hash { my $hash_a = shift; my $hash_b = shift; my $c;
$c = _recurse_union_hash ($hash_a, $hash_b);
return wantarray ? %{$c} : $c;
}
sub _recurse_union_hash { my $a = shift; my $b = shift; my $c = {};
if (defined($a)) {
foreach my $k (keys %{$a}) {
if (ref($a->{$k}) eq 'HASH') {
$c->{$k} = _recurse_union_hash($a->{$k},$b->{$k});
} else {
$c->{$k} = $a->{$k};
}
}
}
if (defined($b)) {
foreach my $k (keys %{$b}) {
if (ref($b->{$k}) eq 'HASH') {
$c->{$k} = _recurse_union_hash($a->{$k}, $b->{$k});
} else {
$c->{$k} = $b->{$k};
}
}
}
return $c;
}
my %defaults = (
overwrite => 1,
perms => 'rw-r--r--'
);
my $params = _hash_defaults( \%defaults, @_);
Lee una lista de parámetros en un hash, la compara con otra que contiene valores predeterminados y retorna el resultado de mezclar ambas.
Parámetros
Hash con los valores predeterminados.
Hash ó referencia a un hash con los parámetros recibidos. Puede estar vacía.
Resultados
my $path = _build_path ( %parts );
Construye lo más correctamente que puede una ruta de acceso a un archivo, teniendo en cuenta las diferentes partes que se le han proporcionado.
Parámetros
Los parámetros pueden ser tanto un hash como una referencia a un hash, y sus claves las siguientes:
Directorio de partida
Nombre del fichero
Nombre de la extensión
Resultados
Ruta producida o un valor nulo si ha habido algún error.
my $path = _build_path ( %parts );
Construye lo más correctamente que puede una ruta de acceso a un archivo, teniendo en cuenta las diferentes partes que se le han proporcionado.
Parámetros
Los parámetros pueden ser tanto un hash como una referencia a un hash, y sus claves las siguientes:
Directorio de partida
Nombre del fichero
Nombre de la extensión
Resultados
Ruta producida o un valor nulo si ha habido algún error.
my %arbol = (
'a' => {
'b' => {
'c' => {
'd' => q(hola)
}
}
}
};
my $elem = _name_in_tree(\%arbol, "a.b.c.d");
Localiza un elemento de un árbol (formado por tablas hash) según un nombre.
Parámetros
Resultados
Referencia al elemento (sea cual sea éste) ó un valor nulo si no se localiza.
_build_in_tree(\%arbol, "a.b.c.d", $value);
Construye los diferentes elementos de un árbol de hashes hasta conseguir asignar el valor correspondiente en el último de ellos.
Si el elemento existe, obviamente, no se construye nada.
Parámetros
Referencia a la raíz del árbol
Ruta al elemento formada por nombres separados por el carácter punto (.).
Valor a asignar directamente al último de ellos.
Resultados
my $mensaje = _msgx('Yo soy {nombre} y tengo {edad} años',
'nombre' => q(coco),
'edad' => 500 );
Recibe un texto con ciertas claves encerradas entre llaves y un hash conteniendo valores para esas claves, y sustituye en el texto dichos valores.
Parámetros
Resultados
(c) Copyright Víctor Moral <victor@taquiones.net>
Este programa está bajo licencia GPL (ver perlgpl) y puede distribuirse y/ó modificarse bajo los términos en ella descritos.
| Basicos - Funciones imprescindibles para la vida moderna |