【问题标题】:Difficulty with special characters in hash key names in perlperl 中哈希键名称中的特殊字符的困难
【发布时间】:2015-07-02 06:13:39
【问题描述】:

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

并且检查匹配将不起作用.... 任何人都可能得到的任何帮助将不胜感激。

提前致谢

瑞克·克拉姆利奇

对不起..我只提供了一个sn-p..

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

我打算上传整个代码块,但它有 250 行,我认为这有点过头了。

我的数据检查显示正确的“$UPN 的文字版本”,但匹配失败。

如前所述,我确信问题在于字符串中 @ 和句点的插值。

我非常感谢所有看过我的 sn-p 的人。

【问题讨论】:

  • 它是如何失败的?你得到什么输出?
  • 1) 你有use strict 和use warnings 吗? 2)Data::Dumper告诉你%HTE_Master_List的内容是什么?

标签: perl hash


【解决方案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)。

【讨论】:

    猜你喜欢
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多