2014-12-06 2 views
1

몇 시간 동안 수색했는데 많은 자원을 발견했지만 내 목적을 위해 정보를 정리할 수는 없습니다. 나는 파일이 있습니다 :Perl : Regular Expression

FirstName LastName 
FirstName LastName 
FirstName LastName 
etc... 

학생들이 프레젠테이션을 통해 과제를 배정한 숙제입니다. 아래 99 %의 코드는 템플릿 스크립트의 99 %입니다. 내 기여가 들어오는 곳에 코멘트를 드리겠습니다. 모음으로 시작하여 텍스트 파일로 출력하는 모든 성을 찾아야합니다. 그것은 내가 생각하는 대부분의 문제를 "제 2 필드의 첫 번째 문자"로서의 정규 표현식을 알아내는 것으로 보입니다 - 물론 기본 Perl과 관련된 몇 가지 문제가 있습니다. 어떻게해야합니까? 이것은 정말로 많은 신용 가치가있는 것은 아니지만,이 문제를 해결하기 위해 열심히 노력하고 있습니다. 도움을 청합니다.

#!/usr/bin/perl 


    $input = 'names.txt'; 
    open ($info, $input) or die "Could not open $input"; 

    $output = 'hw.txt'; 
    open($fh, '>>', $output) or die "Could not open $output"; 

    @names = split(/\s/, $line); #MINE - probably wrong somehow 

    while(my $line = <$info>) { 

    if ($names[2] =~ /^AEIOU/){ #MINE - also probably wrong somehow 

     print $fh "$line"; 
     } 
    } 



    close $info; 
    close $fh; 
+1

http://stackoverflow.com/questions/8023959/why-use-strict-and-warnings –

+0

이 게시물을 쳐다 보면서 그것이 그것이 생각하는 바가 아니면 단지 희망적인 생각인지 궁금합니다 ... more research – Shane

+0

제안 된 것을 시도하는 것은 궁금해하는 것보다 낫습니다. –

답변

0

에서 시작, 당신은 필요가 없습니다 너무 실제로 코드보다 약간 더 안전

while(my $line = <$info>) { 
    if($line =~ /\s[AEIOU]/) { 
    print $fh $line; 
    } 
} 

때문에 경우가 '첫 선을 분할하는 대신 또한 인쇄에 "$line" 따옴표를 다시,하고, 당신은 단지 시작 매우에서 정규식 일치를 사용할 수 있습니다 두 배 공간이면 코드는 두 번째 배열 요소가 undef이됩니다 (다른 방법으로 완화 할 수 있음).

여담으로

, 나는 펄 여전히 숙제 :)의 대상이되는보고 매우 기쁘게 생각

+0

나는 본다! 나는 어쨌든 의도 된 것이었을 것이라고 생각한다. 너무 매끄럽게 보입니다. 나는 이것을 시도하고 돌아올거야. 오, 그래, 그리고 Perl 임무에서, 내 교수는 컴퓨터/프로그래밍 (그는 펀치 카드로 시작했다고 말했던 것)이 시작된 이래로 꽤 많이 있던 슈퍼 구식 인 ... 총 천재 - 카네기 대학에서 내 대학에 왔어. - 멜론. 나는 그가 모든 프로그래밍 언어에 아주 가깝다는 것을 알고 있으며 심지어 자신의 언어를 여러 개 만들었다 고 생각한다. 그는 걷는 컴퓨터입니다. – Shane

+1

Presto! 그것은 효과가 있었다. 고마워 - 내 두통이 이제 가라 앉고있어. – Shane

+0

... 재미있게하기 위해서, 명령 줄에서 한 줄짜리 줄을 써야합니다 :'perl -ne "은/\\ s [AEIOU] /"names.txt> hw.txt'; – smathy

1

많은 프로그래밍 언어처럼, 펄의 배열 인덱스는 당신이 당신의 대답을 가지고있는 것처럼 당신은 소리, 그러나 다만 완성도를 위해 당신은 또한 실제로 초기화되기 전에 $line를 사용하고 0

+0

Lol, yes reallyed. 글쎄, 나는 그것을 "$ names [1]"로 변경했다. 결과 파일은 생성되었지만 비어있다. ... – Shane