【发布时间】:2016-03-06 14:28:32
【问题描述】:
我正在编写一个 Perl 脚本并编写了一个子例程来检查我的哈希中是否存在密钥。这是子程序的内容:
sub _check_existence {
my $lib = $_[0];
while( my( $key, $value ) = each (%{$MyHash{sub_keys}}))
{
if ($key =~ $lib)
{
return 1;
}
}
return 0; }
问题是函数每次运行时都会从上次运行时开始。
例如,如果哈希有键012345678,则第一次调用子例程寻找键3 它会找到它。但是如果我再次调用子例程来寻找3,我会得到false,因为迭代从4 继续,而不是从头开始。
谁能解释一下是什么原因造成的?
【问题讨论】:
-
$key =~ $lib通常会测试$key*是否包含$lib中的子字符串。它也将做一些奇怪的事情,如果$lib包含任何正则表达式元字符\987654339(987654341[987654343^987654345*987654347?的.。您可能只想测试字符串相等$key eq $lib
标签: perl function hash iteration