Sto provando a creare un hash che conserva l'ordine di aggiunta delle chiavi. Sotto la sezione "Creare un hash e preservare l'add-ordine" di this page, dà un frammento che modifica un hash in modo che quando si fa keys
restituisce le chiavi nell'ordine in cui li si è inserito nella hash.In Perl, come posso usare Tie :: IxHash con un dizionario mentre 'use strict' è attivo?
quando faccio il seguente frammento:
use strict;
our %foo;
use Tie::IxHash;
tie (%foo, Tie::IxHash);
non riesce 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.
Come posso ottenere Tie :: IxHash a lavorare quando è in use strict
?
L'esempio di dsolimano ha funzionato.
use strict;
our %foo;
use Tie::IxHash;
tie (%foo, "Tie::IxHash");
$foo{c} = 3;
$foo{b} = 2;
$foo{a} = 1;
print keys(%foo);
stampe:
cba
senza la linea tie...Tie::IxHash
è
cab
abbastanza sicuro. Ha funzionato. Aggiornamento biglietto esimo con il pieno ad esempio –
FWIW, il doc CPAN è: '# semplice usage' ' utilizzare Tie :: IxHash; '' legare HASHVARIABLE, Tie :: IxHash [, LIST]; ' Nessuna menzione di il secondo argomento è una stringa! (Ma usando le virgolette funziona.) – Chap
Guarda perldoc - http://perldoc.perl.org/perltie.html, 'tie VARIABILE, CLASSNAME, list', e gli esempi tutte le stringhe di utilizzo per' CLASSNAME'. Direi che è un problema con la documentazione di 'Tie :: IxHash' su CPAN. – dsolimano