我很难让这个简单的脚本在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。
我非常感谢所有看过我片段的人。
答案 0 :(得分:1)
您展示的代码有效。看它运行here。
您的代码中还有其他一些错误。
注意:的
如果使用双引号定义$UPN
,则代码将失败,因为它将尝试插入数组。
#wrong: tries to interpolate nonexistent array @apples
my $UPN = "joesnuffy@apples.grumpy.com";
#right
my $UPN = 'joesnuffy@apples.grumpy.com';
但是,如果您使用warnings
和strict
,则会遇到此问题。显然你没有使用strict,因为上面的代码失败了(由于没有声明$A
)。