我有一个编写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}) {
可能很明显,我很遗憾。我不确定我是否正确地将文件插入到哈希中,或者如何打印值以进行调试。
答案 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;
}
但是,请告诉我们该文件的内容是什么样的。