Как добавить функцию поиска в Perl? - PullRequest
0 голосов
/ 11 октября 2011

После получения предложений от здесь . Я изменил свой код как:

my $lineCount=0;
while (my $line = <>){
        for  (split /\s+/, $line)
        {
                $words{$_} ++;
        }
        print "Interpreting the line \t $line\n";
        $lineCount++;
}
foreach $k (sort keys %words) {
    print "$k => $words{$k}\n";
}
foreach $k (sort keys %words) {
     $count = $count+$words{$k};
}
print "the total number of words are $count. \n";
$test = scalar(keys %words);
print "The number of distinct words are $test. \n";
print "The number of line is $lineCount. \n";
print "The word distribution is as follows \n";
my %lengths;
$lengths{length $_} += $words{$_} for keys %words;
foreach $k (sort keys %lengths) {
        print "$k => $lengths{$k}\n";
}

Теперь я хочу добавить функцию поиска в этот код. Например, если я получаю ключевое слово поиска от пользователя, используя <STDIN>, то с помощью этого ключевого слова, как я могу найти номер поискового слова в данном текстовом файле (который я передаю в код)?

Поскольку я новичок в Perl, мне нужен более Perl способ сделать это.

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 11 октября 2011

Вы можете попробовать:

   my $lineCount = 0;
   my %lengths;

   while (<>){
      for (split /\s+/) {
         $words{$_}++;
      }
      print "Interpreting the line \t $_\n";
      $lineCount++;
   }

   foreach (sort keys %words) {
      print "$_ => $words{$_}\n";
      $count = $count+$words{$k};
   }

   my $test = scalar(keys %words);
   $lengths{length $_} += $words{$_} for keys %words;


# Output Results

   print <<"END";
The total number of words are $count.
The number of distinct words are $test.
The number of lines is $lineCount.
The word distribution is as follows:
END

   foreach (sort keys %lengths) {
      print "$_ => $lengths{$_}\n";
   }


#Get user input
   my $input = <STDIN>;
   chomp $input;

   print "$input: $words{$input} matches\n" if $words{$input};
0 голосов
/ 11 октября 2011

Вы можете сделать что-то вроде этого:

chomp (my $keyword = <STDIN>);
if(exists($words{$keyword}))
{
        print "The word $keyword occured $words{$keyword}";
}
else
{
        print "The word  $keyword doen't occur sorry!";
}

См. здесь , в теме: Проверка на наличие ключа в хэше

Надеется, что это поможет.

0 голосов
/ 11 октября 2011

Вы можете повторно использовать хеш% words для проверки существования и общего количества ключевых слов. Вы можете добавить этот код после того, как текстовый файл прочитан и% слов заполнено.

my $msg = "Enter keyword (Ctrl+d on Unix or Ctrl+Z on Windows for none): ";
print "\n$msg";
while ( chomp (my $keyword = <STDIN>) ) 
{
    #check if the keyword exists in %words.
    if ( my $total_keyword = $words{$keyword} ) 
    {
        print "\nTotal number of the keyword $keyword is - $total_keyword\n";
    }
    print "\n$msg";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...