5 Stimmen

Im Perl, wie kann ich Tie::IxHash mit einem Wörterbuch verwenden, während 'use strict' aktiviert ist?

Ich versuche, einen Hash zu erstellen, der die Reihenfolge erhält, in der die Schlüssel hinzugefügt wurden. Im Abschnitt "Erstellen eines Hash und Beibehalten der Hinzufügereihenfolge" auf dieser Seite wird ein Code-Schnipsel bereitgestellt, der einen Hash modifiziert, sodass bei Verwendung von keys die Schlüssel in der Reihenfolge zurückgegeben werden, in der sie in den Hash eingefügt wurden.

Wenn ich den folgenden Code-Schnipsel ausführe:

use strict;
our %foo;
use Tie::IxHash;
tie (%foo, Tie::IxHash);

Erhalte ich folgende Fehlermeldung:

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.

Wie kann ich Tie::IxHash zum Funktionieren bringen, wenn use strict aktiviert ist?

Das Beispiel von dsolimano hat funktioniert.

use strict;
our %foo;
use Tie::IxHash;
tie (%foo, "Tie::IxHash");

$foo{c} = 3;
$foo{b} = 2;
$foo{a} = 1;

print keys(%foo);

ergibt:

cba

ohne die Zeile tie...Tie::IxHash ergibt es

cab

8voto

dsolimano Punkte 8542

Das zweite Argument für tie ist ein String, also versuchen Sie es

use strict;
our %foo;
use Tie::IxHash;
tie (%foo, 'Tie::IxHash');

5voto

toolic Punkte 51826

Mit Anführungszeichen wird der Fehler beseitigt:

use strict; 
our %foo; 
use Tie::IxHash; 
tie (%foo, "Tie::IxHash"); 

Es wird nicht im POD erwähnt, aber es wird in den Beispielen auf CPAN verwendet.

Siehe auch tie.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X