2012-07-21 5 views
-3

나는 코딩 규칙을 펄 조금 noobish는, 누군가가 설명 할 수 있어요 :이 펄 변수는 무엇을 의미합니까?

  • 왜 펄 변수 앞에 //<이 있습니까?
  • \==~의 의미는 무엇입니까?
  • 코드에서 ; 앞에 끝 문자 /이 필요한 이유는 무엇입니까? /start=\'([0-9]+)\'/?

1 회 3 하위 질문 일종의 정말의 perldocs에 의해 해결되었다,하지만 다음 행을 수행 코드에 의미?

push(@{$Start{$start}},$features);

나는 우리가 @start 배열에 $ 기능을 밀고 있지만 @$Start{$start} 무슨 뜻 이해? 코드 내에서 @Start = ($start);

이런 식으로 뭔가가있다 : 그것과 동일

use FileHandle; 

sub open_infile { 
    my $file = shift; 
    my $in = FileHandle->new($file,"<:encoding(UTF-8)") 
     or die "ERROR: cannot open $file: $!\n" if ($Opt_utf8); 
    $in = new FileHandle("$file") 
     or die "ERROR: cannot open $file: $!\n" if (!$Opt_utf8); 
    return $in; 
} 

$uamf = shift @ARGV; 
$uamin = open_infile($uamf); 


while (<$uamin>) { 
    chomp; 
    if(/<segment /){ 
     /start=\'([0-9]+)\'/; 
     /end=\'([0-9]+)\'/; 
     /features=\'([^\']+)\'/; 
     $features =~ s/annotation;//; 

    push(@{$Start{$start}},$features); 
    push(@{$End{$end}},$features); 
    } 
} 

편집 그래서 펄 문서의 일부 정독 한 후, 여기 일도 내가 '입니다 ve gotten

  • /<segment /은 che che 읽기 라인 이 while (<$uamin>)에 있는지 여부를 확인하려면 다음 문자열이 포함되어 있는지 확인하십시오 : <segment.
  • 이 유사 /start=\'([0-9]+)\'/이 어떤 변수를 인스턴스와는 아무 상관이없는, 그것은 while (<$uamin>)에서 의 readline이 \'([0-9]+)\'는 숫자 문자열을 의미 start=\'([0-9]+)\'이 들어 있는지 여부를 확인하는 정규식 체크합니다.
  • 대체가 정규식 일치를 테스트 중이므로 =~이 사용됩니다. 참조 What does =~ do in Perl?

답변

2
이 구문을 참조 않았다

(지점 이상을 : 당신이 본 것을 밖으로 편집 된 물건이)? /foo/은 변수가 아닌 정규식을 사용하는 일치 연산자를 나타냅니다. 즉, 첫 번째 줄은 입력 문자열 $_에 문자 시퀀스 <segment이 있는지 확인합니다.

다음 세 줄은 정규식 일치를 실행 한 다음 결과를 무시한다는 점에서 본질적으로 아무런 효과가 없습니다 (부작용이 있지만 후속 정규식은 부작용도 무시함).

마지막 줄은 문자 annotation;의 첫 번째 문자를 문자열 $features의 빈 문자열로 바꿉니다.

펄의 정규식에 대해 알아 보려면 perldoc perlretut 명령을 실행하십시오.

+0

아직 코드를 수정했습니다. 입력 라인 $ _에 "세그먼트"대신 "<세그먼트"문자가 포함되어 있는지 첫 번째 라인에서 확인합니까? – alvas

+0

@ 2er0 : Typo, 미안 해요. –

관련 문제