在Perl中,当'use strict'打开时,如何将Tie :: IxHash与字典一起使用?

时间:2010-02-25 02:01:11

标签: perl

我正在尝试创建一个保留添加键的顺序的哈希。在this page的“创建哈希并保留添加顺序”部分下,它提供了一个修改哈希的片段,因此当您执行keys时,它会按照您将它们插入到键中的顺序返回键。散列。

当我执行以下代码段时:

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

失败了:

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.

如何在use strict开启时让Tie :: IxHash工作?

dsolimano的示例有效。

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

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

print keys(%foo);

打印:

cba

没有tie...Tie::IxHash

cab

2 个答案:

答案 0 :(得分:8)

tie的第二个参数是一个字符串,请尝试

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

答案 1 :(得分:5)

使用引号可以消除错误:

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

POD中未提及,但它在CPAN上的examples中使用。

另见tie