Package
Package
같은 이름의 변수나 서브루틴을 구별
서로의 구역을 나누고 그 구역 안에서 각각의 일을 처리한다.
하나의 파일에 복수의 Package선언 가능
Package 생성
Package packageName;
Ex) package pack1;
Package를 선언하지 않은 경우 main package로 설정
Package 사용
상이한 package의 변수 또는 서브루틴 접근
- Ex)print "$pack1::number \n";
- Ex)&main::func();
Package의 효율성
Namespace문제를 해결
변수의 범위
변수의 종류
Lexical variable
변수의 범위 : 변수가 선언된 Lexical 영역의 내부
My를 붙여서 기술한 변수
My $my_var;
Global variable == package variable
변수의 범위 : 모든 Lexical영역
기본적인 변수, our를 붙여서 기술한 변수
our $out_var;
{}안에서 설정된거는 pack을 통해 접근
Local variable
변수의 범위 : 변수가 선언된 Lexical 영역의 내부 와 호출된 Lexical영역 내부
local를 붙여서 기술한 변수
local $local_var;
Lexical Scoping
Code block{}안에 있는 영역을 의미
각각의 서브루틴도 lexical영역에 해당
Package
- Package는 변수의 영역을 나누지 않음
- 단순한 namespace를 나눔
엄격한 문법 체크
use strict; #엄격한 문법 체크
use warnings #잔소리 추가
라이브러리와 모듈 == like headfile
사용자들이 프로그램을 쉽게 작성할 수 있도록 정의된 변수 및 서브루틴
라이브러리 작성
- 라이브러리 확장자는 pl(perl library)로 하고 파일 끝에 1;이라고 명시
- 라이브러리를 불러오기 위해서는 require함수 사용
모듈 작성
- 모듈 확장자는 pm(peal module) 으로 하고 파일 끝에 1;이라고 명시
- 모듈을 불러오기 위해서는 use함수 사용
- 모듈은 require함수로도 읽을 수 있다.
- 파일에는 package filename 으로 사용 일반적인 관례
- 지금은 모듈을 많이 사용