Mar Feb 05, 2008 7:54 am
|
 |
Lor
Perlero Nuevo

|
Registrado: 28 Abr 2005
Mensajes: 99
Ubicación: Argentina, Santa FE
|
|
| Ordenar un hash por valor |
|
|
Ante todo muchas gracias.
Suponiendo que quiero volcar el resultado de una consulta en un hash, y luego ordenar el hash, no por la key sino por el value.
El value se compone de la concatenación de dos campos de la tabla: uno numérico y otro varchar.
| Perl: | my $ref = $dbh_m->selectall_arrayref ( " SELECT id_campo , codigo, nombre " .
" FROM tabla " );
foreach (@$ref) {$arreglo{${$_}[0]} = ${$_}[1] . ' - ' . ${$_}[2] ; } |
Obtenido el hash ahora, ¿cómo lo ordeno por valor cuando quiero RESPETAR en la ordenación el campo numérico que formó la concatenación y ahora ya es un string?
| Perl: | my (@arreglo) = sort { $ arreglo {$a} <=> $ arreglo {$b}} keys % arreglo;
|
¿Cómo hago para ordenar el resultado de la consulta previa a la concatenación?
Por ejemplo, suponiendo que la consulta devuelva
| Código: |
1 , 11 , nombre 1
2, 232 , nombre 2
3, 254 , nombre 3
4, 1, nombre4 |
quiero obtener un hash ORDENADO de la siguiente forma: tiene en cuenta el campo numérico de la concatenación:
| Código: |
{ ‘4’ => ’ 1 – nombre4’,
‘1’ => ’ 11 – nombre1’,
‘2’ => ’ 232 – nombre2’,
‘3’ => ’ 254 – nombre3’ } |
Muchas gracias  |
|
|
|


Jue Feb 07, 2008 2:56 pm
|
 |
Lor
Perlero Nuevo

|
Registrado: 28 Abr 2005
Mensajes: 99
Ubicación: Argentina, Santa FE
|
|
|
|
|
¡¡¡ GRANDE !!! Explorer
Muchas gracias, lo solucioné con Tie::Hash::Sorted. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|