В Perl, как я могу использовать Tie :: IxHash со словарем, когда включен «использовать строгий»? - PullRequest
5 голосов
/ 25 февраля 2010

Я пытаюсь создать хеш, который сохраняет порядок добавления ключей. В разделе «Создание хэша и сохранение порядка добавления» этой страницы он предоставляет фрагмент, который изменяет хэш, поэтому при выполнении 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.

Как мне заставить Tie :: IxHash работать, когда use strict включен?

Пример 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 ]

8 голосов
/ 25 февраля 2010

Второй аргумент tie является строкой, поэтому попробуйте

use strict;
our %foo;
use Tie::IxHash;
tie (%foo, 'Tie::IxHash');
5 голосов
/ 25 февраля 2010

Использование кавычек устраняет ошибку:

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

Он не упоминается в POD, но используется в примерах на CPAN.

См. Также галстук .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...