2013-12-16 8 views
0

대문자인지 소문자인지에 관계없이 파일에서 단어가 몇 번 나타나는지 찾아야합니다. 나는 내 % count를 ;단어 대문자 또는 소문자 수 찾기

foreach my $line (split "\n", $text) 
{ 
    foreach my $word ($line =~ /(\w+)/g) 
{ 
    $count{$word}++; 
} 
} 

print "'love' occurs $count{myword} times\n"; 

나는 (\ w +)가 대소 문자를 구할 것이라고 생각했지만 그렇지 않았다. 해시 값을 추가 할 때 대소 문자를 변경해야한다는 것을 알고 있지만, 할 때, 나는 여전히 옳은 답을 얻지 못합니다.

+1

'myword'를'love'로 변경하십시오. – toolic

+0

일부 입출력을 표시해야합니다. – toolic

답변

3

\w은 대소 문자 (0-9 및 밑줄)와 일치합니다. lc은 대소 문자를 무시하는 한 가지 방법입니다.

use warnings; 
use strict; 

my $text = ' 
Here are words to count. 
Words. And now more words. 
'; 

my %count; 
while ($text =~ /(\w+)/g) { 
    $count{lc $1}++; 
} 

use Data::Dumper; 
$Data::Dumper::Sortkeys=1; 
print Dumper(\%count); 

__END__ 

$VAR1 = { 
      'and' => 1, 
      'are' => 1, 
      'count' => 1, 
      'here' => 1, 
      'more' => 1, 
      'now' => 1, 
      'to' => 1, 
      'words' => 3 
     }; 
+1

고맙습니다. – user3108222