1
my $var_cot_descn="Veteran's Affairs";
my %cot_descn= ("Correctional","Veteran's Affairs","State Pharmacy Assistance Program","VA Medical Center","VA Mail Order Pharmacy","PHS 340B Entity");

if (exists $cot_descn{$var_cot_descn}){
    print  "CustomerDomain=\"GOV\"
        />
        </Org>
        \n";
}
else{
    print  "CustomerDomain=\"COM\"
        />
        </Org>
        \n";
}

一切正常,除非我与导致 if 条件失败的“退伍军人事务”进行比较。

我怎样才能解决这个问题?

4

2 回答 2

5

您的哈希没有"Veteran's Affairs"键,它有一个"Veteran's Affairs" 。如果您以更常见的方式定义哈希:

my %cot_descn = (
    "Correctional" => "Veteran's Affairs",
    "State Pharmacy Assistance Program" => "VA Medical Center",
    "VA Mail Order Pharmacy" => "PHS 340B Entity"
);

那么结构会更清晰。既然没有"Veteran's Affairs"钥匙,当然这个测试会把你送到else分支:

if (exists $cot_descn{$var_cot_descn})

$var_cot_descn什么时候"Veteran's Affairs"

也许你有第一个键/值在你的%cot_descn倒退。

于 2013-07-07T03:03:55.373 回答
0

你不是说:

#!/usr/bin/env perl

use strict;
use warnings;

# --------------------------------------
use Data::Dumper;

# Make Data::Dumper pretty
$Data::Dumper::Sortkeys = 1;
$Data::Dumper::Indent   = 1;

# Set maximum depth for Data::Dumper, zero means unlimited
local $Data::Dumper::Maxdepth = 0;

# --------------------------------------

my @cot_descn = (
        "Correctional",
        "Veteran's Affairs",
        "State Pharmacy Assistance Program",
        "VA Medical Center",
        "VA Mail Order Pharmacy",
        "PHS 340B Entity",
    );
my %cot_descn = map { $_ => 1 } @cot_descn;

print Dumper \%cot_descn;
于 2013-07-07T12:29:07.837 回答