简单的Perl字符串匹配特殊字符即'

San*_*Rao 1 perl

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";
}
Run Code Online (Sandbox Code Playgroud)

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

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

mu *_*ort 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"
);
Run Code Online (Sandbox Code Playgroud)

然后结构会更清晰.由于没有"Veteran's Affairs"密钥,当然这个测试会将您送到else分支机构:

if (exists $cot_descn{$var_cot_descn})
Run Code Online (Sandbox Code Playgroud)

$var_cot_descn"Veteran's Affairs".

也许你的%cot_descn倒退中有第一个键/值.