Примечание об обновлении: я изменил этот вопрос, чтобы, надеюсь, задать его лучше.Первоначально у меня было больше кода, который пытался продемонстрировать то, что я хотел, но это только мешало.Также я делал ссылки на «определенные».Оказывается, это было не то, что я хотел.Обновленный вопрос должен прояснить, что я пытаюсь сделать.
Я пытаюсь найти способ проверить, был ли объявлен хеш в скрипте perl внутри модуляfunction.
Имеется следующий скрипт (script.pl):
#!/usr/bin/perl -w
use strict;
use checkHash;
our %testHash = ("key"=>"value");
print &checkHash() ? 1 : 0;
Вместе с этим модулем (checkHash.pm);
sub checkHash {
if(%main::testHash) {
return 1;
}
else {
return 0;
}
}
1;
Работает на Macс OS X 10.6.7 и perl v5.10.0 возвращаемое значение checkHash равно «1», что я и ожидал.Однако, если я удаляю пару ключ-значение из скрипта, изменив строку:
our %testHash = ("key"=>"value");
на:
our %testHash = ();
Возвращаемое значение равно «0».Мое первоначальное предположение было, что это будет «1», но после прочтения о том, как тест, который я использую, проверяет размер в хэше, я понимаю, почему это неправильное мышление.
Мои вопросы:
Есть ли тест, который можно использовать в модуле checkHash, который вернет true, если хэш, который он тестирует, существует, но ему не назначены какие-либо ключик этому?