perl中哈希键名称中的特殊字符有困难

Difficulty with special characters in hash key names in perl

我很难让这个简单的脚本在 Perl 中运行 我有两个哈希,它们的键类似于电子邮件地址。 我真的相信我的问题是解释“@”和“。”键中的符号

我已验证散列键正确且测试数据存在 所有键都是小写

当程序运行时,它会创建这样的哈希....

###  $UPN here is "joesnuffy@apples.grumpy.com"
$AD_Master_List{$UPN}="$DN,$FN,$LN,$UPN,$Email,$JobTitle,$Dept";

###  $UPN2 here is "joesnuffy@apples.grumpy.com"
$HTE_Master_List{$UPN2}="$EN,$RFN,$MI,$RLN,$RPT,$RDPT,$UPN,$EMAIL";}

#####   The failing Code snippet is below

foreach $A (keys(%HTE_Master_List))
{
  unless (exists ($AD_Master_List{$A}))
    {print "$A is not present in Active Directory\n";}
}

并且匹配检查将不起作用.... 如果有人能提供任何帮助,我们将不胜感激。

提前致谢

里克·克鲁姆利奇

抱歉..我只提供了一个片段..

我使用严格 warnings.and 预定义了所有变量。

我本来打算上传整个代码块,但它有 250 行,我认为这太过分了。

我的数据检查显示正确 'literal version of the $UPN' 但匹配失败。

如前所述,我确定问题出在字符串中插入 @ 和句点。

我非常感谢所有看过我的代码片段的人。

您显示的代码有效。看到了吧运行here.

您的代码中还有一些其他错误。

注:

如果您用双引号定义 $UPN,您的代码将失败,因为它会尝试插入一个数组。

#wrong: tries to interpolate nonexistent array @apples
my $UPN = "joesnuffy@apples.grumpy.com";

#right
my $UPN = 'joesnuffy@apples.grumpy.com';

但是,如果您使用 warningsstrict,则会发现此问题。很明显你没有使用strict,因为上面的代码失败了(由于没有声明$A)。