본문 바로가기

Script/Perl

05.  Scalar Data

 
영어에서 단수, 복수를 구분하는 것 처럼 스칼라는 단수에 해당한다.
 
즉 일반적으로 펄에서 하나의 값을 갖는 것은 스칼라이며 스칼라 값과 스칼라 변수가 있다.
 
스칼라 변수에는 숫자, 문자, 참조, undef 의 값들을 대입할 수 있다.
 
Boolean 타입은 따로 없고 조건문에 0, "", "0", undef 인 경우 false 라고 인식한다.
 
 
my $num = 4040.5 ;
print $num ;
 
my $string1 = "hello";
my $string2 = "world";
print $string1 .' '. $string2 ;
 
 
 
숫자 
 
펄에서는 정수값과 실수값을 구분하지 않는다. 
 
정수값도 내부적으로 부동 소수 값으로 계산한다.
 
0
2001
-40
255
4345345677567
4_345_345_677_567
 
마지막의 경우에는 밑줄을 사용했는데 정수를 가독성있게 표현할 수 있다.
 
펄도 2진수, 8진수, 16진수를 지원한다.
 
2진수는 0b 로 시작하고 8진수는 0 으로 16진수는 0x 로 시작한다.
 
037 ( 8진수 )
0xff ( 16진수 )
0b11110000 ( 2진수 )
 
 
 
숫자 연산자
 
더하기, 곱하기, 빼기, 나누기, 제곱 ( ** ), 나머지 연산자를 제공한다.
 
제곱만 좀 다르다.
 
 
 
문자열
 
펄에서 문자열의 길이에 대한 제약은 없다.
 
그것은 펄이 따르는 '내재된 한계는 없다' 는 원칙과 일치한다.
 
문자열도 숫자처럼 상수로 표현할 수 있다.
 
문자열 상수 표현은 펄 프로그램에서 문자열을 나타내는 방식 중 하나이다.
 
문자열 상수는 작은따옴표 문자열 상수와 큰따옴표 문자열 상수의 두 가지 방식으로 표현할 수 있다.
 
작은 따옴표
큰 따옴표
작은 따옴표 문자열의 경우에는 역슬러시를 제외하고
나머지는 문자 그대로 쓰여진다.
역슬러시도 \' 만 의미가 있고 나머지는 의미가 없다.
큰따옴표 문자열 상수는 이전 C 언어와 비슷한데
이를 '역슬래시 회피' 라고 한다. ( \n, \t  )
그리고 큰 따옴표 보간이 일어난다. ( 문자열 대체 )
 
 
 
문자열 연산자
 
- 문자의 결합은. 으로 한다.
 
- x 는 문자열 반복 연산자이다.
 
print "Sam" x 3; # SamSamSam  
 
 
 
숫자와 문자간의 자동 변환
 
대부분의 경우 펄은 필요할 때마다 자동으로 숫자와 문자 간의 변환을 수행한다.
 
필요한 것이 숫자인지 문자인지는 전적으로 스칼라 값에 어떤 연산자를 사용하느냐에 달려있다.
 
print "123df" * 3; # 369 with warning. 
print "z" . 5*7 ; # z35
 
 
 
연산자 우선순위
 
C 언어와 똑같다.
 
착각하고 있던 것이 지수 연산인데 4 ** 3 ** 2 의 경우는 4 ** ( 3 ** 2 ) 와 같다.
 
우선순위 보단 괄호를 잘 사용하자.
 
 
 
비교 연산자
 
문자와 숫자의 비교 연산자는 다르다.
 
비교
숫자
문자열
같음
==
eq ( euqal )
같지않음
!=
ne ( not equal )
작음
<
lt  ( less than )
>
gt ( greater than )
작거나 같음
<=
le ( less than or equal )
크거나 같음
>=
ge ( greater than or equal )
 
 
 
Boolean
 
펄에는 불리언이 없기 때문에 이를 대신해 특별한 규칙을 사용한다.
 
- 0 , '', '0' , undef 은 false
 
 
 
undef 값
 
스칼라 변수에 값을 넣기 전 ( 값 할당 전 ) undef 로 자동 할당 된다.
 
undef 라는 값을 숫자로 사용하려 한다면 이 값은 0 인 척할 것이고
 
undef 라는 값을 문자로 사용하려 한다면 이 값은 '' 인 척 할 것이다.
 
하지만 undef 는 숫자도 문자열도 아니며 완전히 별개의 형태를 가진 스칼라 값이다.
 
 
 
<STDIN> 함수
 
사용자 입력을 가져오는 경우 <STDIN> 함수를 사용할 수 있다.
 
my $line = <STDIN>;
 
if($line eq '\n' ) {
       print "a";  
} else {
       print "b";
}
 
 
 
chomp 함수
 
chomp 는 줄 바꿈을 없애주는 함수다.
 
흔히 아래와 같이 사용한다.
 
chomp ( my $line = <STDIN> );
 
print $line ;
 
 

'Script > Perl' 카테고리의 다른 글

07. Hash  (0) 2020.01.21
06. Array Function  (0) 2020.01.21
04. Variable  (0) 2020.01.21
03. Hello World  (0) 2020.01.21
02. Elipse 에  Perl IDE 설치  (0) 2020.01.21