(1)
산술 연산자

 

기본적으로 +, -, *, /의 사칙 연산자를 지원하고 누승 연산자(**), 나머지 연산자(%), 단항 부정 연산자 등이 있다.

 

$result1 = 4 ** 3;

$result2 = 26 % 3;

-$y;

 

누승 연산자는 첫 번째 줄에서와 같이 $result1에는 4 3번 곱한다는 뜻이다. 64가 된다.

나머지 연산자는 두 번째 줄에서와 같이 $result2에는 26 3으로 나누고 난 나머지 값이 저장되며 값은 2가 된다.

단항 부정 연산자는 숫자나 변수 앞에 을 붙여서 사용한다. 이 의미는 해당 값에 1을 곱한 것과 같다.

 

(2) 비교 연산자

 

Perl은 문자열 비교 연산자와 수치 비교 연산자가 다르다. 다음의 내용은 수치 비교 연산자와 문자열 비교 연산자를 정리한 것이다.

 

연산

문자열 연산자

수치 연산자

보다 작다

lt

< 

보다 크다

gt

> 

같다

eq

=

보다 작거나 같다

le

<=

보다 크거나 같다

ge

>=

같이 않다

ne

!=

비교 후 1,0,-1을 반환

cmp

<=>

 

Perl에서는 변수에 문자열과 숫자를 구분하지 않고 저장되기 때문에 비교 연산자를 사용할 때는 정확히 사용해야 한다. 다음의 예를 살펴보자.

 

$num1=123;

$num2=45;

$result1=$num1 < $num2;

$result2=$num1 lt $num2;

 

앞의 예에서 $num1 $num2에는 각각 123 45라는 값이 저장되어 있다. 여기서 $result1에서는 <을 사용하여 수치 비교를 했고, $result2에서는 lt를 사용하여 문자열 비교를 했다. $result1 123 < 45가 되기 때문에 참이 된다. 그러나 $result2에서는 123 lt 45가 되므로 거짓이 된다. 문자열에서는 12345 보다 작기 때문이다. 참고로 문자열의 비교는 각 자리 별로 아스키 코드를 기준으로 비교를 한다. 같은 값을 가지고 비교를 했지만 다른 연산자에 따라 다르게 결과가 나오기 때문에 문자열과 숫자 비교는 정확히 사용해야 한다.

 

(3) 대입 연산자

 

기본적인 대입 연산자는 = 이다. $a = $b의 형식으로 왼쪽의 값을 오른쪽에 대입하는 것이다. 그러나 다음과 같은 다양한 연산자를 활용하면 다양한 연산을 할 수 있다.

 

연산자

수행결과

$a = 5

$a 5를 대입

$a += 5

$a의 값에 5를 더해서 $a에 대입

$a -= 5

$a의 값에서 5를 빼서 $a에 대입

$a *= 5

$a의 값에 5를 곱해서 $a에 대입

$a /= 5

$a의 값을 5로 나눠서 $a에 대입

$a %=5

$a의 값을 5로 나눈 나머지를 $a에 대입

$a **= 5

$a의 값을 5번 곱해서 $a에 대입

$a .= end

$a의 문자열에 end라는 문자열을 붙여서 $a에 대입

 

(4) 논리 연산자

 

논리 연산자는 어떤 조건이 참인지 거짓인지 판별할 때 사용한다. AND 연산자 &&는 각 조건을 모두 만족할 때 참이 되고 OR 연산자 ||는 어느 한 조건만 만족하면 참이 된다.

 

$a=1;

$b=2;

$result1 = ($a > 0) && ($b < 2);

$result2 = ($a > 1) || ($b < 3);

 

앞의 예를 보면 $result1에서는 $a > 0이 참이고 $b < 2가 거짓이므로 결과는 거짓이 된다. $result2에서는 $a > 1이 거짓이지만 $b < 3이 참이기 때문에 결과는 참이 된다.

 

 

(5) 자동 증가와 자동 감소 연산자

 

$num = $num + 1;

$num += 1;

 

앞의 예는 변수에 1을 더하는 방법이다. 여기에는 다음과 같은 방법이 또 있다.

 

$num++;

++$num;

 

이 방법은 모두 $num 1을 더하는 연산이다. 차이점은 $num++이 어떤 문장 속에서 사용 되었을 때 해당 라인이 수행되고 나서 값이 증가하는 반면 ++$num은 값이 증가한 후에 라인이 수행된다. 자세한 예로 다음을 살펴보자.

 

$num1=5;

$num2=5;

$result1 = $num1++;                       # $result1=5   $num1=6

$result2 = ++$num2;                       # $result2=6   $num2=6

 

$num1 $num2에는 5라는 값이 들어있다. 그리고 $result1에는 $num1의 값이 대입되고 나서 $num1 1 증가 시키게 된다. 그래서 $result1에는 5가 들어가고 $num1 6이 된다. 그러나 $result2에서는 $num2의 값이 먼저 1 증가하고 나서 $result2에 값이 저장되므로 $result2 6이 되고 $num2 6이 된다.

 

자동 감소 연산자는 ++ 대신 --을 사용한 것이고 사용하는 방식은 같다.

 

 

(6) 문자열 연결과 반복 연산자

 

문자열 연결 연산자는 두개의 문자열을 하나로 합치는 것이다. .을 사용하며 다음의 예를 살펴보자.

 

$string = Perl . Book;

 

앞에서 Perl이라는 문자열과 Book이라는 문자열을 그대로 붙여서 $string에는 PerlBook 이라는 값이 저장된다. 변수를 사용해도 같은 값을 얻는다.

 

$string1 = Perl;

$string2 = Book;

$string = $string1 . $string2;

 

앞의 경우도 결과는 마찬가지로 PerlBook 이 된다. 이 때 . 연산을 해도 $string1 $string2에는 아무런 영향이 없다.

 

문자열 반복은 문자열을 여러 번 반복한 다음에 이들을 합치며 x 를 사용한다.

 

$string = a x 5;

 

앞의 문장은 a 5번 반복해서 하나로 합친 결과를 $string에 저장하게 되므로 aaaaa  저장된다. 이 연산에서도 마찬가지로 변수를 지정해서 사용할 수 있다.

 


문자열 반복 연산자를 사용할 때는 연산자 양쪽에 있는 변수나 값 사이에 공백을 주어야 한다. 연산자인 x가 문자이기 때문에 공백이 없을 경우에는 변수와 붙어서 다른 변수로 인식할 수도 있기 때문이다. 다음의 예를 살펴보자.

 

$string = $text x 5;            # 맞다

$stinrg = $textx 5;             # 틀리다

$string = $text x5;             # 틀리다

 

두 번째 줄에는 $text x가 붙어서 $textx라는 변수인 것처럼 보인다. 이럴 경우 에러가 발생하게 된다.

Posted by OJJ