Perl新手。使用Windows 10 w / Padre IDE。我有一个问题一直困扰着我,这可能很简单,但我还没有在网上找到答案。
以下是我的搜索之前正在处理的代码。它读取一个list.txt文件,其中包含姓名和匹配的电话号码,因此我有两个哈希值(一个是name => number,第二个是number =>)。
my $search = "";
print "File name to be read in: ";
my $textFile = <>;
open FILE, $textFile;
my %hash;
while (<FILE>)
{
chomp;
my ($key, $val) = split / /;
$hash{$key} .= exists $hash{$key} ? "$val" : $val;
}
close FILE;
open FILE, $textFile;
my %hash2;
while (<FILE>)
{
chomp;
my ($val, $key) = split / /;
$hash2{$key} .= exists $hash2{$key} ? "$val" : $val;
}
close FILE;
print "(N) for name (#) for number search and (.) to exit: ";
$search = <>;
if ($search == "N") #heres where we have the problem
{
print "Enter name: ";
my $person = <>; #user defined search looks for Bob Smith
print $hash{$person}; #prints nothing
}
但是,当我进行非用户定义的搜索时,它的工作完善如下:
if ($search == "N")
{
#print "Enter name: ";
#my $person = <>;
print $hash{"Bob Smith"}; #prints Bob Smith's number
}
为了记录,我在屏幕上进行了$ search打印以确认在我首先输入名称时没有问题。当我用户定义搜索时,哈希不会上拉。当名称被特定地编码到散列函数中时,它每次都有效。
感谢你帮助了一个难倒的Perl Noobie。
答案 0 :(得分:2)