打开文本文件作为哈希并在该哈希中搜索

时间:2012-10-17 20:58:19

标签: perl hash

我有一个编写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}) {

可能很明显,我很遗憾。我不确定我是否正确地将文件插入到哈希中,或者如何打印值以进行调试。

1 个答案:

答案 0 :(得分:-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;

}

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