perlko - 한국어 Perl 안내서
Perl의 세계에 오신 것을 환영합니다!
Perl은 가끔 'Practical Extraction and Report Language'라고 하기도 합니다만 다른 널리 알려진 것들 중에서 'Pathologically Eclectic Rubbish Lister'라고 하기도 합니다. 사실 이것은 끼워 맞춘 것이며 Perl이 이것들의 첫 글자를 가져와서 이름을 붙인 것은 아닙니다. Perl의 창시자 Larry가 첫 번째 이름을 먼저 생각했고 널리 알려진 것을 나중에 지었기 때문입니다. 그렇기 때문에 'Perl'은 모두 대문자가 아닙니다. 널리 알려진 어떤 것을 가지고 논쟁하는 것은 의미가 없습니다. Larry는 두 개 다 지지합니다.
가끔 p가 소문자로 작성된 'perl'을 볼 것입니다. P가 대문자로 되어 있는 'Perl'은 언어를 참조할 때 쓰이며 'perl'처럼 p가 소문자인 경우는 여러분의 프로그램을 컴파일하고 돌릴 때 사용되는 해석기를 지칭할 때 사용됩니다.
Perl은 원래 문자열 처리를 위해 만들어졌지만, 지금은 시스템 관리, 웹 개발, 네트워크 프로그래밍, GUI 개발 등을 포함한 다양한 분야에서 널리 사용되는 범용 프로그래밍 언어입니다.
이 언어는 아름다움(매우 작고, 우아하며, 매우 간결함)보다 실용성(사용하기 쉽고, 효율적이며, 가능한 한 강력함)을 중시합니다. 사용하기 쉽고, 절차적 프로그래밍과 객체 지향 프로그래밍을 모두 지원하며, 강력한 문자열 처리 기능을 내장하고 있으며, 세계에서 가장 인상적인 제3자 모듈 모음을 갖추고 있는 것이 Perl의 가장 중요한 특징입니다.
Perl의 언어적 특징은 pod/perlintro.pod 문서에서 소개합니다.
이번 릴리스에서 가장 중요한 변경 사항은 pod/perldelta.pod에서 논의합니다.
또한 다양한 출판사에서 출판한 많은 Perl 책이 다양한 주제를 다룹니다. 자세한 내용은 pod/perlbook.pod 문서를 참조하세요.
현대적인 운영 체제를 사용하고 있고 현재 버전의 Perl을 로컬에 설치하려면 다음 명령을 실행하세요.
./Configure -des -Dprefix=$HOME/localperl
make test
make install
위 명령은 여러분의 플랫폼에 맞게 환경을 설정하고 컴파일을 수행한 후, 회귀 테스트를 수행한 뒤, 홈 디렉터리 하위의 localperl 디렉터리에 Perl을 설치합니다.
문제가 발생하거나 사용자 정의 버전의 Perl을 설치해야 하는 경우 현재 배포판에 포함된 INSTALL 파일의 자세한 설명을 참조해야 합니다. 또한 다양한 플랫폼에서 Perl을 빌드하고 사용하는 방법에 대한 도움말과 팁이 포함된 여러 README 파일이 있습니다.
Perl을 설치한 후에는 perldoc
도구를 사용하여 풍부한 문서를 사용할 수 있습니다. 시작하려면 다음 명령을 실행하세요.
perldoc perl
Perl은 뜨개질에서부터 로켓 과학에 이르기까지 모든 분야에서 사용할 수 있는 크고 복잡한 시스템입니다. 어려움에 부딪힐 때는 이미 누군가가 해결했을 가능성이 높습니다. 문서를 모두 확인했는데도 버그가 확실한 경우 perlbug
도구를 사용하여 버그를 보고하세요. perlbug
에 대한 자세한 내용은 perldoc perlbug
또는 명령줄에서 perlbug
를 실행하여 확인할 수 있습니다.
Perl을 사용할 수 있게 되었더라도 Perl은 지속적으로 진화하고 있으므로 여러분이 직면한 버그가 수정되었거나 여러분에게 유용할 것으로 생각되는 새로운 기능이 추가된 최신 버전이 있을 수 있습니다.
항상 최신 버전의 Perl은 CPAN(Comprehensive Perl Archive Network) 사이트 http://www.cpan.org/src/에서 찾을 수 있습니다.
Perl 소스에 간단한 패치를 제출하려면 pod/perlhack.pod 문서의 "SUPER QUICK PATCH GUIDE"를 참조하세요.
개인적인 참고 사항입니다. 여러분이 이처럼 멋진 것을 만든다는 것을 알기를 바랍니다. 그것은 저의 이야기의 "저자(Author)"를 기쁘게 합니다. 이것이 여러분을 불쾌하게 만든다면 여러분의 "저작(Authorship)"에 대한 생각을 수정해야 할 수도 있습니다. 하지만 어쨌든 여러분은 Perl을 사용하는 데 문제가 없습니다. :-)
- "저자"로부터.
Perl은 5.8.0 버전부터 유니코드/ISO 10646을 광범위하게 지원합니다. 유니코드 지원의 일환으로 한중일을 비롯한 세계 각국에서 유니코드 이전에 사용되고 지금도 널리 사용되고 있는 수많은 인코딩을 지원합니다. 유니코드는 전 세계에서 사용되는 모든 언어(유럽의 라틴 알파벳, 키릴 알파벳, 그리스 알파벳, 인도와 동남 아시아의 브라미 계열 스크립트, 아랍 문자, 히브리 문자, 한중일의 한자, 한국어의 한글, 일본어의 가나, 북미 인디언의 표기 체계 등)를 수용하는 것을 목표로 하고 있기 때문에 기존에 사용되던 각 언어 및 국가와 운영 체제에 고유한 문자 집합과 인코딩에 사용할 수 있는 모든 문자는 물론이고 기존 문자 집합에서 지원하지 않는 매우 많은 문자를 포함하고 있습니다.
Perl은 내부적으로 유니코드를 문자 표현을 위해 사용합니다. 보다 구체적으로 말하면 Perl 스크립트 안에서 UTF-8 문자열을 쓸 수 있고, 각종 함수와 연산자(예를 들어, 정규식, index, substr)가 바이트 단위 대신 유니코드 글자 단위로 동작합니다. 더 자세한 것은 pod/perlunicode.pod 문서를 참고하세요. 유니코드가 널리 보급되기 전에 널리 쓰이고 있었고, 여전히 널리 쓰이고 있는 각국/각 언어별 인코딩으로 입출력을 하고 이들 인코딩으로 된 데이터와 문서를 다루는 것을 돕기 위해 Encode 모듈이 쓰이고 있습니다. 무엇보다 Encode 모듈을 사용하면 수많은 인코딩 사이의 변환을 쉽게 할 수 있습니다.
Encode 모듈은 다음과 같은 한국어 인코딩을 지원합니다.
euc-kr
US-ASCII와 KS X 1001을 같이 쓰는 멀티바이트 인코딩으로 흔히 완성형이라고 불림. KS X 2901과 RFC 1557 참고.
cp949
MS-Windows 9x/ME에서 쓰이는 확장 완성형. euc-kr에 8,822자의 한글 음절을 더한 것임. alias는 uhc, windows-949, x-windows-949, ks_c_5601-1987. 맨 마지막 이름은 적절하지 않은 이름이지만, Microsoft 제품에서 CP949의 의미로 쓰이고 있음.
johab
KS X 1001:1998 부록 3에서 규정한 조합형. 문자 레퍼토리는 cp949와 마찬가지로 US-ASCII와 KS X 1001에 8,822자의 한글 음절을 더한 것으로 인코딩 방식은 전혀 다름.
iso-2022-kr
RFC 1557에서 규정한 한국어 인터넷 메일 교환용 인코딩으로 US-ASCII와 KS X 1001을 레퍼토리로 하는 점에서 euc-kr과 같지만 인코딩 방식이 다름. 1997-8년 경까지 쓰였으나 더 이상 메일 교환에 쓰이지 않음.
ksc5601-raw
KS X 1001(KS C 5601)을 GL(즉, MSB를 0으로 한 경우)에 놓았을 때의 인코딩. US-ASCII와 결합하지 않고 단독으로 쓰이는 일은 X11 등에서 글꼴 인코딩(ksc5601.1987-0. '0'은 GL을 의미함)으로 쓰이는 것을 제외하고는 거의 없음. KS C 5601은 1997년 KS X 1001로 이름을 바꾸었음. 1998년에는 두 글자(유로화 부호와 등록 상표 부호)가 더해졌음.
예를 들어, euc-kr 인코딩으로 된 파일을 UTF-8로 변환하려면 명령줄에서 다음처럼 실행합니다.
perl -Mencoding=euc-kr,STDOUT,utf8 -pe1 < file.euc-kr > file.utf8
반대로 변환할 경우 다음처럼 실행합니다.
perl -Mencoding=utf8,STDOUT,euc-kr -pe1 < file.utf8 > file.euc-kr
이런 변환을 좀더 편리하게 할 수 있도록 도와주는 piconv가 Perl에 기본으로 들어있습니다. 이 유틸리티는 Encode 모듈을 이용한 순수 Perl 유틸리티로 이름에서 알 수 있듯이 Unix의 iconv
를 모델로 한 것입니다. 사용법은 다음과 같습니다.
piconv -f euc-kr -t utf8 < file.euc-kr > file.utf8
piconv -f utf8 -t euc-kr < file.utf8 > file.euc-kr
Perl은 기본적으로 내부에서 UTF-8을 사용하며 Encode 모듈을 통해 다양한 인코딩을 지원하지만 항상 다음 규칙을 지킴으로써 인코딩과 관련한 다양하게 발생할 수 있는 문제의 가능성을 줄이는 것을 추천합니다.
소스 코드는 항상 UTF-8 인코딩으로 저장
소스 코드 상단에 use utf8;
프라그마 사용
소스 코드, 터미널, 운영체제, 데이터 인코딩을 분리해서 이해
입출력 파일 핸들에 명시적인 인코딩을 사용
중복(double) 인코딩을 주의
유니코드 컨소시엄
http://std.dkuug.dk/JTC1/SC2/WG2
기본적으로 Unicode와 같은 ISO 표준인 ISO/IEC 10646 UCS(Universal Character Set)을 만드는 ISO/IEC JTC1/SC2/WG2의 웹 페이지
https://www.cl.cam.ac.uk/~mgk25/unicode.html
유닉스/리눅스 사용자를 위한 UTF-8 및 유니코드 관련 FAQ
http://wiki.kldp.org/Translations/html/UTF8-Unicode-KLDP/UTF8-Unicode-KLDP.html
유닉스/리눅스 사용자를 위한 UTF-8 및 유니코드 관련 FAQ의 한국어 번역
다음은 공식적인 Perl 관련 자료중 일부입니다.
Perl 공식 홈페이지
O'Reilly의 Perl 웹 페이지
CPAN - Comprehensive Perl Archive Network, 통합적 Perl 파일 보관 네트워크
메타 CPAN
Perl 邮件列表
Perl 元博客
Perl 僧侣的修道院
https://www.pm.org/groups/asia.html
亚洲地区 Perl 蒙古人聚会
Perl 圣诞日历
以下是能帮助您更深入地学习 Perl 的韩语相关网站。
韩国 Perl 社区官方门户
Perl 文档韩语化项目
https://cafe.naver.com/perlstudy.cafe
Naver Perl 咖啡馆
韩国 Perl 用户聚会
Seoul.pm Perl 圣诞日历 (2010 ~ 2012)
GYPARK(Geunyoung Park)的 Perl 相关韩语文档存储库
请参考“LICENSING”项下的README 文件。
Jarkko Hietaniemi <[email protected]>
申正植 <[email protected]>
金道亨 <[email protected]>