숫자 계산 연산자
문자열 계산
논리 연산자
논리 연산자는 어떤 조건이 참인지 거짓인지 판별할 때 사용합니다. 논리적 AND ( && )는 두 조건이 모두 참일 때 전체를
참으로 결정하고, 논리적인 OR ( || )는 두 조건이 모두 거짓일 때 전체를 거짓으로 결정합니다. 핵교 댕길 때 다들 배우셨지요 ? Perl
언어에서도 0은 거짓으로 보고 그외는 참으로 봅니다. 그래서
가 성립합니다. 논리 연산자 (||, &&)의 재주부리기 : || 는 앞과 뒤의 참 거짓을 바탕으로 전체적 참 거짓을 판가름하는 연산자이지만, 앞의 조건이 거짓일 때 뒤의 명령어를 실행시키는 역할도 합니다. 물론 앞의 조건이 참이면 전체가 참이므로 뒤의 명령어는 실행할 생각도 않습니다. 따라서 다음과 같은 명령이 가능합니다. 편리하지 않습니까 ? 위의 예제에서는 $a가 $b보다 작거나 같지 않으면 뒤의 $max = $a가 실행됩니다. AND 연산자 (&&) 또한 마찬가지입니다. 즉, $a가 참인 경우에 뒤의 ( $max = $a )도 참인지 시험하기 위해 ( $max = $a )를 실행시키는 것입니다. 그 실행이 끝나고 난 후 전체식 $a > $b && ( $max = $a )이 참인지 거짓인지 가늠되는데 그 결과는 사용하던 안하던 여러분의 자유겠지요. 위의 예문에서 ( $max = $a )와 같이 ()를 사용한 것은 || 또는 &&이 = 보다 계산시 우선 순위가 높기 때문에 괄호를 사용하지 않고 $a > $b && $max = $a와 같이 했을 때 $a > $b && $max가 먼저 계산이 되고 나중에 = $a라는 쓰레기만 남아서 에러 메시지가 나오고 실행되지 않는것을 막기 위해서입니다. 정리해서 말하면 위의 경우처럼 사용되는 ||는 "그렇지 않으면"의 뜻이고 && 는 "그러할 경우에"의 뜻이 되는것입니다. 그 외의 연산자
,(comma) 연산자는 연속된 명령의 실행, 목록내에서는 요소간의 분리 등을 나타냅니다. 그다지 중요한 것은 아니지만 가끔은 편리할 때가
있습니다.
그리고, >, <, >=, >= # 숫자의 비교. if ( $a > $b ) { print "O.K."; } ==, !=, <=> # <=>는 앞의 변수가 작으면 -1, 크면 1, 앞과 뒤의 변수가 # 같으면 0을 return합니다. lt, gt, le, ge # 문자열의 비교. "ba"는 "bb"보다 작습니다(lt). eq, ne, cmp # cmp는 숫자의 <=>와 같은 역할. az는 bb보다 작습니다.(-1) 3 | 2 # bit계산용 OR. 00000011 | 00000010 -> 00000011 -> 3 3 & 2 # bit계산용 AND. 00000011 & 00000010 -> 00000010 -> 2 3 ^ 2 # bit계산용 XOR. 00000011 ^ 00000010 -> 00000001 -> 1 연산자의 우선순위
한 명령행에서 여러 종류의 연산자가 사용되었을 때, perl.exe는 연산자들의 우선 순위를 따져서 먼저 계산될 부분을 결정하여 순서대로 계산을
합니다. 예를 들어 5 + 4 * 2 의 경우 앞의 5 + 4를 먼저 계산하는 것이 아니라 뒤의 4 * 2를 먼저 계산하고 그 다음에 5 +
8을 계산하는 것이지요.
이 때 앞의 5 + 4를 먼저 계산 시키려면 ( 5 + 4 ) * 2 와 같이 괄호로 묶어 주어야만 합니다. 우선 순위가 같은 연산자 끼리는 앞의 연산자에 우선 순위가 있습니다. 어떻게 아느냐고요 ? 5 * 4 % 3 과 5 % 3 * 4를 각각 실행시켜 보십시오. 다음은 연산자 사이의 우선 순위입니다. ( perlop.htm 발췌 )
위에 설명하지 않았던 연산자들이 많이 있죠 ? 일단은 접어 두고 가세요. 또, 연산자 not, and, or, xor는 Perl 4.x에서는
없는 것들입니다. Perl 5.x 에서 사용가능한 연산자들이지요.
또 궁금해서 도저히 못 참으시는 분 들은 PERL의 manual 페이지(영문)를 찾아 보세요. 이전 | 목록 | 다음 |
Perl 이야기(기초강좌) >