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

时间:2015-04-23 20:45:08

标签: perl hash

我很难让这个简单的脚本在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";}
}

并且检查比赛不会起作用.... 任何人可能提供的任何帮助将不胜感激。

提前致谢

Rick Crumlich

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

我使用严格警告。并且预定义了所有变量。

我打算上传整个代码块,但它是250行,我认为这样会有点过分。

我的数据检查显示了$ UPN'的正确版本。但匹配是失败的地方。

如上所述,我确信问题是在字符串中插入@和Period。

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

1 个答案:

答案 0 :(得分:1)

您展示的代码有效。看它运行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)。