2013-10-21 1 views
2

은 여기 내 코드입니다 :A-Z와 a-z만을 포함하는 단어를 어떻게 계산합니까? 우선 좋아

#!/usr/bin/perl 

use open qw(:utf8 :std); 

use utf8; 

print "Which file do you want to search?\n"; 

$file = <>; 

if ($file =~ /^\s*$/) { 
    $file = "test.txt"; 
} 

open (FILE, $file) or die("Could not open file."); 

%hash; 

while (<FILE>) { 
    $hash{$_}++ for split /\W+/; 
} 

$count = 0; 

for (sort { 
     $hash{$b} <=> $hash{$a} 
        || 
      lc($a) cmp lc($b) 
        || 
       $a cmp $b 
    } keys %hash) 

{ 
    next unless /\w/; 
    printf "%-20s %5d\n", $_, $hash{$_} if ($count <= 9); 
    $count++; 
} 

난 단지 단지 A-Z와 A-Z를 포함하는 단어를 계산하고 싶지만,이 코드는 숫자를 계산합니다. 나는 무엇을해야만 하는가? 당신이 볼 수 있듯이

Car      18 
5      11 
Test     11 
Task     10 
Perl      7 
School     6 
Hi      5 
Tired     5 
Word      4 
bye      3 

, 숫자 5가 나열되어 일이 안된다

은 출력의 예입니다.

감사합니다.

+0

감사합니다. 그리고 예, 저는 문자 만 포함하는 단어를 말했습니다 : P 몇 시간 동안 코드를 작성한 후 약간 피곤합니다. 나는 모든 새로운 문제가 perl에 익숙하지 않기 때문에 작은 문제마다 책과 포럼을 읽어야한다 .- ' – Timmy

답변

9
++$hash{$_} for grep /^[a-zA-Z]+\z/, split /\W+/; 

물론 문자 만 포함 된 단어 일 가능성이 높습니다.

++$hash{$_} for grep /^\pL+\z/, split /\W+/; 
+0

왜'split/\ Pl + /'가되지 않습니까? –

+0

@Patrick J. S, 해당 사항 없음. 그러면 'abc123 def'의 abc가 OP 코드가 아닐 때 단어가됩니다. – ikegami

+0

아 맞습니다. 감사. –

관련 문제