> https://qntm.org/files/perl/perl_kr.html
- .pl 확장자를 일반적으로 사용한다. (텍스트 파일)
- 스칼라($), 배열(@), 해시(%) 세 가지 종류의 변수가 있다. 각각을 고유의 시길(sigil)--앞에 붙는 특수 문자--로 구분한다.
- 변수는
my
구문으로 선언하며 감싸고 있는 블럭이 끝나거나 그렇지 않으면 파일 끝까지 scope가 지속된다.
스칼라 변수에는 다음 값들을 대입할 수 있다.
undef
(파이썬의None
, PHP의null
)- 숫자 (정수/실수를 구분하지 않는다)
- 문자열
- 다른 변수에 대한 참조 (reference)
문자열 결합은 .
연산자로 한다.
print "Hello ".$string;
# "Hello world"
펄에는 boolean이 없다. 만약 스칼라가 if
문 안에 있다면 다음과 같은 경우에만 "false"값이 된다.
undef
- 숫자
0
- 문자열
""
- 문자열
"0"
보통 참/거짓은 사실 1
/""
을 반환하는 것들이다.
스칼라에 대입된 값이 숫자인지 문자열인지 확인하는 것은 불가능하다. 사실 그럴 필요가 없다. 사용할 연산자에 따라 알아서 결정하기 때문이다.
함수처럼 보이지만 function이 아니라 연산자(operator)다. 어떤 문자열을 "구분 기호"로 분리하여 배열 속에 차곡차곡 나눠 담는 기능을 한다. @배열 = split /분리자/,$문자열;
형태로 사용
@_ = split;
처럼 분리기호와 분리할 문자열을 생략할 수도 있다. 이 때는 디폴트 변수인 $_
의 내용에서 공백을 기준으로 분리한다.
다음의 3개는 동일한 역할을 한다.
@_ = split;
@_ = split / /, $_;
@_ = split ' ', $_;
또한 /\s+/ 이렇게 분리자를 정규표현식으로 지정할 수도 있다.
- 마지막 문자가 개행 문자(
\n
)일 경우, 이를 잘라낸다. - 실제로 perl에서는 키보드로 숫자나 문자를 입력받으면 마지막에 자동으로 개행 문자를 삽입하는데, 이런 것들을 파일처리할 때 제거해주기 위해서 사용된다.