카테고리 없음

perl 의 문자열 찾기

진탱이 2009. 1. 16. 14:01

$long = "The world of mine !"; if( $long =~ /World/i ) { print "Yes\n"; } # 이상한게 있지요 ? else { print "No.\n"; }
이 예에서는 yes가 출력됩니다. /World/뒤에 i 자 하나가 매미처럼 붙어 있죠 ? "ignore case"의 첫 글자로 대소문자 구분을 하지 말란 뜻입니다. HTML의 태그들은 대소문자를 구분하지 않습니다. 그런 경우 <table>과 <TaBle>을 동시에 찾으려면 아주 유용한 선택이 되겠지요.

앞에서 $_라는 특수 변수에 대하여 이야기 한 적이 있습니다. 찾아보세요. 다시 한 번 말씀드리면 어떤 변수가 사용되어져야 할 장소에 아무 변수도 보이지 않으면 PERL은 $_가 있는것으로 생각합니다 그래서 위의 간단한 예제는 이렇게 고쳐도 같은 결과를 보여줍니다.

$_ = "The world of mine !"; if( /World/i ) { print "Yes\n"; } # $_ =~ ... 로 생각합니다. else { print "No.\n"; }
또 다른 재미있는 특수 변수를 두개 더 소개하지요. 정신 사나우시면 그냥 그런게 있구나 하고만 넘어가세요.
위의 예제를 이렇게 고쳐봅시다.
$_ = "The world of mine !"; if( /World/i ) { print "Yes\n"; } # $_ =~ ... 로 생각합니다. else { print "No.\n"; } print "Fore : [$`]\nAft : [$']\n"; # $`, $' ??
위의 예제를 직접 실행해 보시기 바랍니다 출력되는 결과는
Yes Fore : [The ] # The 뒤에 공백이 하나 있습니다. Aft : [ of mine !] # of 앞에도 공백...
입니다.
어떤 문자열의 일치를 실험해 본 후 결과가 성공적이면 $`에는 찾은 문구의 바로 앞부분이, $'는 뒷부분이 할당되어 있습니다.

출처 : 한국펄사용자모임



perl 의 =~ ,  $`,  $'   이건 정말 최고입니다.

캬~ 죽인다 perl