정의
펄(Perl) 언어 구조는 고급 프로그래밍 언어인 펄(Perl)의 문법적·구조적 요소들을 말한다. 여기에는 변수와 자료형, 연산자, 제어 흐름 구문, 서브루틴, 패키지·모듈 시스템, 객체 지향 구문, 정규식 통합 등 펄 프로그램을 구성하는 기본적인 형식과 규칙이 포함된다.
개요
펄은 1987년 래리 월(Larry Wall)이 개발한 범용 스크립트 언어이며, 텍스트 처리와 시스템 관리 작업에 강점을 가진다. 펄 프로그램은 일반적으로 .pl 확장자를 가진 파일에 작성되며, 인터프리터가 소스 코드를 직접 실행한다. 언어 구조는 크게 다음과 같은 영역으로 나뉜다.
-
기본 구문
- 문장 구분: 세미콜론(
;) 또는 개행으로 구분한다. - 주석:
#뒤의 내용은 주석으로 처리된다.
- 문장 구분: 세미콜론(
-
변수와 자료형
- 스칼라 변수:
$variable(문자열, 숫자, 참조) - 배열 변수:
@array(리스트) - 해시(연관 배열) 변수:
%hash(키‑값 쌍) - 파일핸들, 정규식, 서브루틴 등은 각각
*,//,&등으로 표기한다.
- 스칼라 변수:
-
연산자
- 산술·비교·논리 연산자 외에 문자열 연결(
.), 정규식 매칭(=~,!~) 등이 있다.
- 산술·비교·논리 연산자 외에 문자열 연결(
-
제어 흐름
- 조건문:
if,unless,elsif,else - 반복문:
while,until,for,foreach,loop - 루프 제어:
last,next,redo,goto
- 조건문:
-
서브루틴(함수) 및 스코프
sub name { ... }형태로 정의하며,my,our,local키워드로 변수 범위를 지정한다.
-
패키지·모듈 시스템
package선언으로 네임스페이스를 구분하고,use,require를 통해 외부 모듈을 로드한다.
-
객체 지향
- 기본적으로는 패키지를 클래스처럼 사용하며,
bless함수를 통해 레퍼런스를 객체화한다.
- 기본적으로는 패키지를 클래스처럼 사용하며,
-
정규식 통합
- 펄은 정규식을 언어 핵심에 통합하여,
/pattern/,qr//,s///,m//등 다양한 매칭·대체 연산을 제공한다.
- 펄은 정규식을 언어 핵심에 통합하여,
어원/유래
‘펄(Perl)’이라는 이름은 ‘Practical Extraction and Report Language’의 약자를 의도적으로 만든 것이 아니라, 창시자 래리 월이 “Pearl”(진주)이라는 단어의 철자를 변형한 것으로 알려져 있다. 따라서 “펄 언어 구조”라는 표현은 ‘Perl 프로그래밍 언어의 구조’를 의미한다. 정확한 용어가 언제부터 사용되었는지는 문헌마다 차이가 있다.
특징
| 구분 | 내용 |
|---|---|
| 유연한 구문 | 같은 기능을 여러 방식으로 표현할 수 있어 코드 작성 시 자유도가 높다. |
| 정규식 내장 | 문자열 처리와 패턴 매칭이 언어 수준에서 최적화돼 있다. |
| 동적 타이핑 | 변수에 자료형을 명시하지 않으며, 실행 시점에 타입이 결정된다. |
| 컨텍스트 의존 | 스칼라·리스트·불리언 등 컨텍스트에 따라 연산 결과가 달라진다. |
| CPAN | 전 세계적으로 방대한 모듈 저장소인 CPAN(Comprehensive Perl Archive Network)을 통해 기능 확장이 용이하다. |
| 호환성 | 버전 5와 6(현재는 Perl 5가 주류) 사이에 문법 차이가 존재한다. |
관련 항목
- Perl – 펄 언어 자체에 대한 개요와 역사.
- CPAN – 펄 모듈과 라이브러리 저장소.
- Perl 5 – 현재 가장 널리 사용되는 펄 버전.
- Perl 6 (Raku) – 펄에서 파생된 별도 언어, 현재는 ‘Raku’라는 이름으로 별도 관리.
- 정규식 – 펄이 강력하게 지원하는 문자열 패턴 매칭 기술.
- 스칼라·리스트·해시 – 펄에서 사용하는 주요 자료구조.
※ 본 문서는 펄 언어 구조에 대한 일반적인 설명을 제공하며, 세부 문법은 버전·사용 환경에 따라 차이가 있을 수 있다.