-1

我有一个任务是编写一个 Perl 文件来打开一个 IP 地址及其主机名的文本文件,用新行分隔,然后将其加载到哈希中。然后我应该要求用户输入用户想要在文件中搜索的内容。如果找到结果,程序应该打印值和键,并再次请求输入,直到用户没有输入任何内容。我什至还没有接近尾声,但需要一些指导。我已经从这里和通过使用一些 Google-Fu 拼凑了一些代码。

这是我正在进行的工作:

#!/usr/bin/perl

print "Welcome to the text searcher! Please enter a filename: ";

$filename = <>;

my %texthash = ();

open DNSTEXT, "$filename"
    or die! "Insert a valid name! ";

while (<DNSTEXT>) {

    chomp;
    my ($key, $value) = split("\n"); 

    $texthash{$key} .= exists $texthash{$key} 
                     ? ",$value" 
                     : $value;
}
print $texthash{$weather.com}

#print "What would you like to search for within this file? "

#$query = <>

#if(exists $text{$query}) {

可能很明显,我很迷茫。我不确定我是否将文件正确插入到哈希中,或者如何打印要调试的值。

4

1 回答 1

-1

这里的问题是我们不知道输入文件是什么样的。假设输入文件以某种方式看起来像:

key1,value1
key2,value2
key3,value3

(或其他类似方式,在这种情况下,键和值对用逗号分隔),您可以这样做:

my %text_hash;

# the my $line in the while() means that for every line it reads, 
# store it in $line
while( my $line = <DNSTEXT>) {
    chomp $line;

    # depending on what separates the key and value, you could replace the q{,} 
    # with q{<whatever is between the key and value>}
    my ( $key, $value ) = split q{,},$line; 

    $text_hash{$key} = $value;

}

但是,是的,请告诉我们文件的内容是什么样的。

于 2012-10-23T16:20:27.743 回答