Estoy tratando de crear un hash que preserve el orden en que se agregan las claves. En la sección "Crear un hash y conservar el orden adicional" de this page, da un fragmento que modifica un hash para que cuando lo haga keys
devuelva las claves en el orden en que las insertó en el hash.En Perl, ¿cómo puedo usar Tie :: IxHash con un diccionario mientras está activado 'use strict'?
cuando lo haga el siguiente fragmento:
use strict;
our %foo;
use Tie::IxHash;
tie (%foo, Tie::IxHash);
falla con:
Bareword "Tie::IxHash" not allowed while "strict subs" in use at /nfs/pdx/home/rbroger1/tmp.pl line 4.
Execution of /nfs/pdx/home/rbroger1/tmp.pl aborted due to compilation errors.
¿Cómo puedo obtener Tie :: IxHash a trabajar cuando está en use strict
?
Ejemplo de dsolimano funcionó.
use strict;
our %foo;
use Tie::IxHash;
tie (%foo, "Tie::IxHash");
$foo{c} = 3;
$foo{b} = 2;
$foo{a} = 1;
print keys(%foo);
impresiones:
cba
sin la línea tie...Tie::IxHash
es
cab
lo suficientemente seguro. Eso funciono. Actualización º billete con la plena ejemplo –
Fwiw, el doc CPAN es: '# sencilla usage' ' utilizar Tie :: IxHash; '' empate HASHVARIABLE, Tie :: IxHash [LIST]; 'No hay mención de ¡Segundo arg siendo una cuerda! (Pero el uso de comillas funciona.) – Chap
Mira perldoc - http://perldoc.perl.org/perltie.html, 'ata VARIABLE, CLASSNAME, LIST', y todos los ejemplos usan cadenas para' CLASSNAME'. Diría que es un problema con la documentación 'Tie :: IxHash' en CPAN. – dsolimano