Perl 언어 개요
Perl 언어 개요 (perl)
perl은 Perl 5 언어 인터프리터입니다. 위키에서는 이 페이지를 Perl 공식 매뉴얼의 입구로 삼아요. Perl을 둘러싼 문서가 어떻게 나뉘어 있는지, 처음 배우는 사람은 어디서 시작하면 좋은지, 그리고 실제 코드를 실행할 때 어떤 옵션이 있는지 한 번에 훑어볼 수 있게 정리했어요.
출처: perldoc - perl
실행 방법 (SYNOPSIS)
명령행에서 perl을 실행하는 기본 형태예요. 각 옵션에 대한 자세한 설명은 perldoc perlrun으로 볼 수 있어요.
perl [ -sTtuUWX ]
[ -hv ] [ -V[:configvar] ]
[ -cw ] [ -d[t][:debugger] ] [ -D[number/list] ]
[ -pna ] [ -Fpattern ] [ -l[octal] ] [ -0[octal/hexadecimal] ]
[ -Idir ] [ -m[-]module ] [ -M[-]'module...' ] [ -f ]
[ -C [number/list] ]
[ -S ]
[ -x[dir] ]
[ -i[extension] ]
[ [-e|-E] 'command' ] [ -- ] [ programfile ] [ argument ]...
도움말 얻기 (GETTING HELP)
Perl과 함께 설치되는 perldoc 프로그램이 Perl에 딸린 모든 문서에 접근할 수 있게 해줘요. 더 많은 문서·튜토리얼·커뮤니티 지원은 온라인 perl.org에서 찾을 수 있어요.
Perl을 이제 막 시작했다면 perldoc perlintro부터 실행해 보세요. 초보자를 위한 일반 입문서인데, Perl의 방대한 문서를 어떻게 헤쳐 나가야 할지에 대한 배경 지식을 잡아줘요. perldoc perldoc을 실행하면 perldoc으로 할 수 있는 더 많은 일도 배울 수 있어요.
접근을 쉽게 하기 위해 Perl 매뉴얼은 여러 섹션으로 나뉘어 있어요.
개요 (Overview)
perl Perl overview (this section)
perlintro Perl introduction for beginners
perlrun Perl execution and options
perltoc Perl documentation table of contents
튜토리얼 (Tutorials)
perlreftut Perl references short introduction
perldsc Perl data structures intro
perllol Perl data structures: arrays of arrays
perlrequick Perl regular expressions quick start
perlretut Perl regular expressions tutorial
perlootut Perl OO tutorial for beginners
perlopentut Perl open() tutorial
perlpacktut Perl pack() and unpack() tutorial
perldebtut Perl debugging tutorial
perlcheat Perl cheat sheet
perlperf Perl Performance and Optimization Techniques
perlstyle Perl style guide
perltrap Perl traps for the unwary
perlfaq Perl frequently asked questions
perlfaq1 General Questions About Perl
perlfaq2 Obtaining and Learning about Perl
perlfaq3 Programming Tools
perlfaq4 Data Manipulation
perlfaq5 Files and Formats
perlfaq6 Regexes
perlfaq7 Perl Language Issues
perlfaq8 System Interaction
perlfaq9 Networking
레퍼런스 매뉴얼 (Reference Manual)
Perl의 문법·데이터 구조·연산자·서브루틴·내장 함수 같은 핵심 레퍼런스가 여기 모여 있어요.
perlsyn Perl syntax: declarations, statements, comments
perldata Perl data structures
perlop Perl expressions: operators, precedence, string literals
perlsub Perl subroutines
perlfunc Perl built-in functions
perlpod Perl plain old documentation
perlpodspec Perl plain old documentation format specification
perldocstyle Perl style guide for core docs
perlpodstyle Perl POD style guide
perldiag Perl diagnostic messages
perldeprecation Perl deprecations
perllexwarn Perl warnings and their control
perldebug Perl debugging
perlvar Perl predefined variables
perlre Perl regular expressions, the rest of the story
perlrebackslash Perl regular expression backslash sequences
perlrecharclass Perl regular expression character classes
perlreref Perl regular expressions quick reference
perlref Perl references, the rest of the story
perlform Perl formats
perlobj Perl objects
perltie Perl objects hidden behind simple variables
perldbmfilter Perl DBM filters
perlclass Perl class syntax
perlipc Perl interprocess communication
perlfork Perl fork() information
perlnumber Perl number semantics
perlthrtut Perl threads tutorial
perlport Perl portability guide
perllocale Perl locale support
perluniintro Perl Unicode introduction
perlunicode Perl Unicode support
perlunicook Perl Unicode cookbook
perlunifaq Perl Unicode FAQ
perluniprops Index of Unicode properties in Perl
perlunitut Perl Unicode tutorial
perlebcdic Considerations for running Perl on EBCDIC platforms
perlsec Perl security
perlsecpolicy Perl security report handling policy
perlmod Perl modules: how they work
perlmodlib Perl modules: how to write and use
perlmodstyle Perl modules: how to write modules with style
perlmodinstall Perl modules: how to install from CPAN
perlnewmod Perl modules: preparing a new module for distribution
perlpragma Perl modules: writing a user pragma
perlutil utilities packaged with the Perl distribution
perlfilter Perl source filters
perldtrace Perl's support for DTrace
perlglossary Perl Glossary
유닉스 계열 시스템에서는 이 문서 파일들이 대개 man 프로그램으로 읽을 수 있는 manpage로도 제공돼요. 일부 문서는 manpage로 제공되지 않으니, man에서 교차 참조를 찾지 못하면 perldoc으로 시도해 보세요. perldoc은 -f 스위치로 함수 문서를 직접 찾아주기도 해요. 다른 유용한 옵션은 perldoc --help(또는 perldoc perldoc, man perldoc)에서 볼 수 있어요.
프로그램에서 뭔가 이상한 일이 생겨 어디서 도움을 찾아야 할지 모르겠다면, 일단 코드를 use strict와 use warnings를 따르도록 고치는 걸 시도해 보세요. 그러면 문제가 정확히 어디인지 짚어내는 경우가 많아요.
상세 설명 (DESCRIPTION)
Perl은 공식적으로 Practical Extraction and Report Language를 줄인 이름이에요. (정확하지 않을 때도 있지만요.)
Perl은 원래 임의의 텍스트 파일을 훑어 정보를 추출하고, 그 정보를 바탕으로 리포트를 출력하는 데 최적화된 언어로 시작했어요. 곧 많은 시스템 관리 작업에도 좋은 언어가 되었고, 세월이 지나면서 범용 프로그래밍 언어로 성장했죠. 요즘은 빠른 "원라이너"부터 본격적인 애플리케이션 개발까지 폭넓게 쓰여요.
이 언어는 아름답기보다(작고 우아하며 최소한이기보다) 실용적(쉽게 쓰고, 효율적이며, 완전한)이 되는 쪽을 의도했어요. 저자가 보기에는 sed, awk, sh의 장점을 일부 결합한 언어라서, 유닉스 사용자가 귀찮은 문제에 대한 빠른 해결책을 만들기에 익숙하고 쉽죠. 범용 프로그래밍 기능은 절차적·함수적·객체지향 패러다임을 모두 지원해서, 어떤 성향이든 큰 프로젝트를 오래 끌고 가기에 편한 언어예요.
Perl의 텍스트 처리 뿌리는 세월이 지나도 잊히지 않았어요. 지금도 어디서나 찾기 힘든 강력한 정규식을 자랑하고, 유니코드 텍스트 지원도 세계 최고 수준이에요. 방대한 확장 모듈 모음을 통해서 온갖 종류의 구조화된 텍스트도 다뤄요. CPAN에 모인 그 라이브러리들은 놀라울 정도로 다양한 문제에 대한 바로 쓸 수 있는 해법을 제공해요. 표준을 정한 적이 없으면 최고의 것에서 훔쳐 오죠 — Perl 자신처럼요.
가용성 (AVAILABILITY)
Perl은 거의 모든 유닉스 계열 플랫폼을 포함해 대부분의 운영체제에서 사용할 수 있어요. 지원 플랫폼 목록은 perlport의 "Supported Platforms"를 참고하세요.
환경 변수 (ENVIRONMENT)
환경 변수에 대한 내용은 perlrun의 ENVIRONMENT 섹션을 참고하세요.
저자 (AUTHOR)
Larry Wall [email protected]과 수많은 다른 사람들의 도움으로 만들어졌어요. Perl 성공담이나 감사 인사를 보내고 싶다면 [email protected]로 연락해 주세요.
파일 (FILES)
"@INC" locations of perl libraries
위의 "@INC"는 같은 이름을 가진 내장 변수를 가리킵니다. 자세한 내용은 perlvar를 참고하세요.
같이 보기 (SEE ALSO)
- https://www.perl.org/ — Perl 홈페이지
- https://www.perl.com/ — Perl 기사
- https://www.cpan.org/ — 종합 Perl 아카이브(CPAN)
- https://www.pm.org/ — Perl Mongers
진단 메시지 (DIAGNOSTICS)
use strict 프래그마를 쓰면 모든 변수가 제대로 선언되도록 강제하고, 옛 Perl 기능의 다른 남용도 막아줘요. 이들은 use v5.12(또는 그 이상) 범위 안에서는 기본으로 켜져요.
use warnings 프래그마는 멋진 진단 메시지를 만들어 줘요. use v5.35(또는 그 이상)라고 쓰면 기본으로 켜지고요. -w 플래그를 쓸 수도 있는데, 이건 자기 통제 밖의 코드까지 포함한 모든 실행 코드에 적용되므로 보통은 권장하지 않아요.
모든 Perl 진단 메시지에 대한 설명은 perldiag에 있어요. use diagnostics 프래그마는 평소 간결한 Perl 경고·오류를 이 긴 형태로 자동 변환해 줘요.
컴파일 오류는 오류의 줄 번호와 함께, 검사할 다음 토큰(또는 토큰 유형)을 알려줘요. (-e 스위치로 Perl에 넘긴 스크립트에서는 각 -e가 한 줄로 세어져요.)
setuid 스크립트에는 "Insecure dependency" 같은 오류를 만들 수 있는 추가 제약이 있어요. perlsec를 참고하세요.
그런데 말이죠, use warnings 프래그마를 꼭 고려해 보시길 권합니다.
버그 (BUGS)
use warnings 프래그마가 암시하는 동작은 필수가 아니에요.
Perl은 타입 캐스팅, atof(), sprintf()를 통한 부동소수점 출력 같은 여러 연산에 대해 여러분 머신의 정의에 좌우돼요.
stdio가 특정 스트림에서 읽기와 쓰기 사이에 seek나 eof를 요구하면, Perl도 그렇게 해요. (이건 sysread()와 syswrite()에는 적용되지 않아요.)
내장 데이터 타입 중 임의의 크기 제한(메모리 크기 제외)이 있는 건 없지만, 몇 가지 임의 제한은 있어요: 변수 이름은 251자를 넘길 수 없고, 진단 메시지가 표시하는 줄 번호는 내부적으로 short 정수로 저장돼서 최대 65535로 제한돼요(그 이상은 대개 wraparound의 영향을 받아요).
버그 리포트는 (perl 소스 트리의 myconfig 프로그램이나 perl -V가 출력하는 전체 설정 정보를 꼭 포함해서) https://github.com/Perl/perl5/issues로 보내 주세요.
Perl은 사실 Pathologically Eclectic Rubbish Lister를 줄인 이름이기도 한데, 그건 아무에게도 말하지 마세요.
참고 (NOTES)
Perl의 좌우명은 "There's more than one way to do it (하는 방법은 하나가 아니다)"예요. 정확히 몇 가지인지는 독자의 몫으로 남겨 두죠.
프로그래머의 세 가지 주요 덕목은 **게으름(Laziness), 조바심(Impatience), 자만(Hubris)**이에요. 그 이유는 Camel Book에서 찾아볼 수 있어요.
더 알아보기
perlintro— 초보자용 Perl 입문perlrun— 실행과 옵션perlsyn— 문법perlop— 연산자와 우선순위perlfunc— 내장 함수