(Perl에서 리디렉션(프로그래밍 언어)
Programming-republic-of-perl.png
패러다임다중 패러다임: 기능, 필수, 객체 지향(클래스 기반), 반사
설계자래리 월
개발자래리 월
첫 등장1988년 2월 1일; 33년(1988-02-01)[1]
안정적 해제
  • 5.34.0[2] / 2021년 5월 20일; 4개월(2021-05-20)
  • 5.32.1[3] / 2021년 1월 23일; 8개월(2021-01-23)
릴리스 미리 보기
5.35.4[4] / 2021년 9월 20일; 12일(2021-09-20)
타이핑 규율동적
구현 언어C
OS크로스 플랫폼
면허증예술적 라이센스 1.0 또는[5][6] GNU 일반 공중 라이센스[7]
파일 이름 확장명.plx, .pl, .pm, .xs, .t, .pod, .cgi
웹사이트www.perl.org
영향을 받은
AWK, BASIC, C, C++, Lisp, Sed, Unix 셸[8]
영향받은
CoffeeScript,[citation needed] Groovy,[citation needed] JavaScript, Julia, LPC, PHP, Python, Raku, Ruby, PowerShell

Perl은 두 의 높은 수준의 범용, 해석된 동적 프로그래밍 언어의 가족이다. 'Perl'은 Perl 5를 지칭하지만, 2000년부터 2019년까지 다시 디자인된 '자매 언어' Perl 6을 지칭하기도 한 뒤 2019년 10월 라쿠로 정식 명칭이 변경됐다.[9][10]

펄이 공식적으로 약어는 아니지만 '실용 추출 및 보고 언어'[12] 등 다양한 백로어가 사용되고 있다.[11] 펄은 1987년 래리 월에 의해 보고서 처리를 쉽게 하기 위해 범용 유닉스 스크립팅 언어로 개발되었다.[13] 이후 많은 변화와 개정을 거쳤다. 2000년 펄 5의 재설계로 시작된 라쿠는 결국 별도의 언어로 진화했다. 두 언어 모두 서로 다른 개발 팀에 의해 독립적으로 계속 발전하고 있으며 서로로부터 자유롭게 아이디어를 차용하고 있다.

Perl 언어는 C, shell 스크립트(sh), AWK sed를 포함한 다른 프로그래밍 언어에서 특징을 차용한다.[14] 그들은 많은 현대 유닉스 명령줄 도구의 임의적인 데이터 길이 제한 없이 텍스트 처리 시설을 제공한다.[15] 펄 5는 1990년대 후반 CGI 스크립팅 언어로 널리 인기를 얻었는데, 그 중 일부는 타의 추종을 불허하는 정규 표현문자열 구문 분석 능력 때문이다.[16][17][18][19]

CGI 외에도 Perl 5는 시스템 관리, 네트워크 프로그래밍, 금융, 생물정보학GUI와 같은 다른 응용 프로그램에 사용된다. 유연성과 힘,[20] 추악함 때문에 "스위스 아미 오브 스크립팅 언어 체인소"라는 별명이 붙었다.[21] 1998년에는 인터넷이 글루 언어로써의 유비쿼터스 사용과 비독점성을 모두 고려하여 "인터넷을 하나로 묶어주는 유도 테이프"라고도 불렸다.[22]

Perl은 매우 표현력이 높은 프로그래밍 언어로서, 주어진 알고리즘의 소스 코드는 짧고 압축성이 높을 수 있다.[23][24]

이름

펄은 원래 "펄"이라고 이름 지어졌다. 월은 그 언어에 긍정적인 함축성이 있는 짧은 이름을 주고 싶었다. 월은 펄의 공식 발매 전에 기존의 펄 프로그래밍 언어를 발견하고 이름의 철자를 바꾸었다.[25]

그 언어를 언급할 때, 그 이름은 대문자로 되어 있다: . 프로그램 자체를 언급할 때 대부분의 Unix 유사 파일 시스템은 대소문자를 구분하기 때문에 이름이 무자본화(perl)된다. Programming Perl 초판이 나오기 전에는 그 언어를 perl로 지칭하는 것이 일반적이었다. 랜달 L. 그러나 슈워츠는 이 책의 언어 이름을 대문자로 써서 활자체를 만들 때 더 돋보이게 했다. 이 사례의 구분은 이후 표준으로 문서화되었다.[26]

그 이름은 때때로 백로니움으로 확장된다: 실용적 추출과 보고[27] 언어, 그리고 perl에 대한 매뉴얼 페이지에 있는 벽 자체의 병리학적으로 다양한 쓰레기 리스터.[28]

역사

초기 버전

래리 월1987년 유니시스에서 프로그래머로 일하면서 펄에 대한 작업을 시작했고,[15] 버전 1.0은 컴프로 출시되었다.source.unix 뉴스 그룹, 1988년 2월 1일.[1] 그 언어는 그 후 몇 년 동안 급속도로 확장되었다.

1988년 출시된 펄 2는 더 좋은 정규 표현 엔진을 선보였다. 1989년에 출시된 Perl 3은 이진 데이터 스트림에 대한 지원을 추가했다.[citation needed]

원래 펄에 대한 유일한 문서는 장문의 한 페이지였다. 1991년 표지로 인해 많은 펄 프로그래머들에게 "카메라북"으로 알려진 Programming Perl이 출판되어 사실상 이 언어의 참조가 되었다. 동시에 Perl 버전 번호는 언어의 주요한 변화를 표시하기 위해서가 아니라 책에 의해 잘 문서화된 버전을 확인하기 위해서 4번으로 부딪혔다.[citation needed]

얼리 펄 5

Perl 4는 1993년 Perl 4.036에서 정점을 찍은 일련의 유지보수 릴리즈를 거쳤으며, Perl 5에서 작업을 시작하기 위해 Wall이 Perl 4를 포기했다. Perl 5의 초기 설계는 1994년까지 계속되었다. Perl5 짐꾼 메일링 리스트는 Perl 5를 다른 플랫폼에 포팅하는 작업을 조정하기 위해 1994년 5월에 제정되었다. Perl 5의 개발, 유지보수, 포팅에 관한 1차 포럼으로 남아 있다.[29]

펄 5.000은 1994년 10월 17일에 발매되었다.[30] 통역사를 거의 완전히 다시 쓴 것이었고, 그것은 언어에 목적어, 참고문헌, 어휘(내) 변수, 모듈 등 많은 새로운 특징들을 추가했다. 중요한 것은 모듈들이 통역사를 수정하지 않고 언어를 확장하기 위한 메커니즘을 제공했다는 점이다. 이를 통해 일반 펄 프로그래머들이 새로운 언어 기능을 추가할 수 있었음에도 핵심 통역사가 안정을 찾을 수 있었다. Perl 5는 그 이후 활발한 개발에 들어갔다.[citation needed]

펄 5.001은 1995년 3월 13일에 발매되었다. Perl 5.002는 1996년 2월 29일에 새로운 프로토타입 기능과 함께 출시되었다. 이것은 모듈 제작자들이 Perl 빌트인처럼 동작하는 서브루틴을 만들 수 있게 했다. 펄 5.003은 1996년 6월 25일 보안 릴리스로 출시되었다.[citation needed]

Perl 5 역사에서 가장 중요한 사건 중 하나는 적절한 언어 밖에서 일어났고 그것의 모듈 지원의 결과였다. 1995년 10월 26일 Perl 언어 및 Perl 모듈의 저장소로 종합 Perl 아카이브 네트워크(CPAN)가 설립되었으며, 2017년 5월 현재 3만5,190개 배포에 18만5,178개 이상의 모듈을 보유하고 있으며, 13,071명 이상의 저자가 집필하고 있으며, 245개소 이상에 전 세계적으로 미러링되고 있다.[31]

Perl 5.004는 1997년 5월 15일에 출시되었으며, 무엇보다도 Universal 패키지가 포함되어 Perl에게 모든 클래스가 자동으로 파생되는 기본 객체와 모듈 버전을 요구할 수 있는 기능을 제공한다. 또 다른 중요한 발전은 Perl이 CGI 스크립팅 언어로 인기를 끄는 데 기여한 [32]CGI.pm 모듈의 포함이었다.[33]

Perl 5.004는 Microsoft Windows, Plan 9, QNXAmiga에 대한 지원을 추가했다.OS.[32]

펄 5.005는 1998년 7월 22일에 발매되었다. 이 릴리즈는 리렉스 엔진에 대한 몇 가지 개선 사항, 그리고 이 시스템을 통해 백엔드에 대한 새로운 후크를 포함했다. B::* 모듈, the modules, the qr// regex 견적 운영자, 다양한 새로운 핵심 모듈 선택 및 BeOS를 비롯한 여러 운영 체제에 대한 지원 추가.[34]

2000–2020

주 버전[35] 최신 업데이트[36]
이전 버전,이상 유지 관리되지 않음: 5.4 1999-04-29
이전 버전,이상 유지 관리되지 않음: 5.5 1999-03-29
이전 버전,이상 유지 관리되지 않음: 5.6 2003-11-15
이전 버전,이상 유지 관리되지 않음: 5.8 2008-12-14
이전 버전,이상 유지 관리되지 않음: 5.10 2009-08-23
이전 버전,이상 유지 관리되지 않음: 5.12 2012-11-10
이전 버전,이상 유지 관리되지 않음: 5.14 2013-03-10
이전 버전,이상 유지 관리되지 않음: 5.16 2013-03-11
이전 버전,이상 유지 관리되지 않음: 5.18 2014-10-02
이전 버전,이상 유지 관리되지 않음: 5.20 2015-09-12
이전 버전,이상 유지 관리되지 않음: 5.22 2017-07-15
이전 버전,이상 유지 관리되지 않음: 5.24 2018-04-14
이전 버전,이상 유지 관리되지 않음: 5.26 2018-11-29
이전 버전,이상 유지 관리되지 않음: 5.28 2020-06-01
이전 버전,이상 유지 관리되지 않음: 5.30 2020-06-01
이전 버전이지만 여전히 유지: 5.32 2021-01-23
현재 안정적인 버전: 5.34 2021-05-20
향후 릴리스의 최신 미리 보기 버전: 5.35 2021-05-21
향후 릴리즈: 5.36 2022-05-20
향후 릴리즈: 7.0 2022?
범례:
구버전
이전 버전, 계속 유지 관리됨
현재 안정화 버전
최신 미리보기 버전
향후 릴리즈

펄 5.6은 2000년 3월 22일에 발매되었다. 주요 변경사항으로는 64비트 지원, 유니코드 문자열 표현, 2 GiB 이상의 파일 지원, "우리" 키워드 등이 있었다.[37][38] Perl 5.6을 개발할 때 버전 관리 방식을 다른 오픈 소스 프로젝트와 유사한 것으로 바꾸기로 결정되었다. 5.005_63 이후, 다음 버전은 5.5.640이 되었고, 개발 버전은 홀수 번호를 가지며 짝수 번호를 가지도록 안정화되었다.[citation needed]

2000년, 월은 지역사회의 새로운 Perl에 대한 제안을 내놓았다. 이 과정에서 Perl 6의 개발을 지도하는 데 사용되어야 할 361개의 RFC(코멘트 요청) 문서가 작성되었다. 2001년,[39] Perl 6에 대한 "종말론"에 대한 작업이 시작되었는데, 이 문서들은 변경 요청을 요약하고 차세대 Perl의 디자인을 제시하기 위한 것이었다. 그것들은 공식적인 문서라기 보다는 RFCs의 요약 자료로 제시되었다. 이때 펄 6은 언어에 대한 설명으로만 존재했다.[citation needed]

Perl 5.8은 2002년 7월 18일에 처음 출시되었고, 그 이후로 거의 매년 업데이트 되었다. Perl 5.8은 유니코드 지원을 개선하고, 새로운 I/O 구현을 추가했으며, 새로운 스레드 구현을 추가했으며, 숫자 정확도를 개선했으며, 몇 개의 모듈을 추가했다.[40] 2013년 현재 이 버전은 여전히 Perl의 가장 인기 있는 버전으로 남아 있으며 Red Hat 5, Suse 10, Solaris 10, HP-UX 11.31 및 AIX 5에서 사용되고 있다.[citation needed]

2004년, 원래 아포칼립스를 요약한 문서인 "시놉시스"에 대한 작업이 시작되었지만, 이것은 펄 6 언어의 규격이 되었다. 2005년 2월, 오드리 탕하스켈에서 쓰여진 펄 6 통역사인 퍼그에 대한 작업을 시작했다.[41] 이것은 Perl 6를 현실로 만들기 위한 최초의 일치된 노력이었다. 이 노력은 2006년에 중단되었다.[42]

PONIE는 Perl On New Internal Engine의 약자다. PONIE 프로젝트는 2003년부터 2006년까지 존재했으며 Perl 5와 Perl 6 사이의 다리가 될 예정이었다. Perl 6 가상 머신인 Perl 6에서 실행되도록 Perl 5 통역기를 다시 쓰는 노력이었다. 목표는 전 세계 수천 개의 기업에서 수백만 개의 Perl 5 코드 라인의 미래를 보장하는 것이었다.[43] PONIE 프로젝트는 2006년에 끝났고 더 이상 활발하게 개발되지 않고 있다. Perl 5 통역사에게 PONIE의 일부로서 이루어진 개선사항들 중 일부는 그 프로젝트에 포함되었다.[44]

2007년 12월 18일 Perl 1.0 20주년, Perl 5.10.0이 출시되었다. Perl 5.10.0에는 주목할 만한 새로운 기능이 포함되어 있어 Perl 6에 가깝게 되었다. 여기에는 스위치 문("gived"/"when"이라 함), 정규 표현식 업데이트, 'smart match operator (~~)[45][46] 등이 포함되었다. 이 무렵 앵무새 가상 머신과 함께 개발된 라쿠도 펄로 알려진 펄 6의 또 다른 구현에 대한 개발이 본격적으로 시작되었다. 2009년 11월 현재 라쿠도 펄은 매월 정기적으로 출시되어 현재 Perl 6의 가장 완벽한 구현이다.

Perl 5.11과 함께 Perl 5의 개발 과정에 큰 변화가 일어났다; 개발계는 매년 안정적인 출시 일정을 가지고 개발 출시 주기의 월별 출시 주기로 전환했다. 그 계획에 따르면 버그픽스 포인트 릴리즈는 매 3개월마다 안정적인 릴리즈를 따를 것이다.[citation needed]

2010년 4월 12일 Perl 5.12.0이 발매되었다. 주목할 만한 핵심 개선 사항: 새로운 기능 포함 package NAME VERSION 구문,[47] 야다 야다 운영자(아직 구현되지 않은 자리 표시자 코드를 표시하기 위해 사용), 암묵적 엄격성, 완전한 Y2038 준수, regex 변환 과부하, DTrace 지원, 유니코드 5.2. 2011년 1월 21일 Perl 5.12.3이 출시되었다. Perl 5.12.3은 업데이트된 모듈과 일부 문서 변경사항을 포함하고 있다.[48] 버전 5.12.4는 2011년 6월 20일에 출시되었다. 그 지점의 최신 버전인 5.12.5는 2012년 11월 10일에 출시되었다.[citation needed]

2011년 5월 14일, JSON 지원이 내장된 Perl 5.14가 출시되었다.[49]

2012년 5월 20일 Perl 5.16이 발매되었다. 주목할 만한 새로운 기능으로는 에뮬레이트하고 싶은 Perl의 특정 버전을 지정할 수 있어 사용자가 Perl 버전을 업그레이드할 수 있지만, 일반적으로 호환되지 않는 이전 스크립트를 실행할 수 있다.[50] Perl 5.16은 또한 유니코드 6.1을 지원하도록 코어를 업데이트한다.[50]

2013년 5월 18일, Perl 5.18이 발매되었다. 주목할 만한 새로운 특징으로는 새로운 dtrace 후크, 어휘 하위, 보다 많은 core: subs, 보안상의 이유로 해시 정비, 유니코드 6.2 지원 등이 있다.[51]

2014년 5월 27일, Perl 5.20이 발매되었다. 주목할 만한 새로운 기능으로는 서브루틴 서명, 해시 슬라이스/새 슬라이스 구문, 사후 픽스 비참조(실험), 유니코드 6.3, 란드() 등이 있다.[52]

일부 관찰자들은 Perl 5.10의 석방이 모던 펄 운동의 시작과 함께 이루어졌다고 믿고 있다.[53] 특히 이 구절은 CPAN의 사용을 수용하고, 최근의 언어의 발전을 이용하고, 고품질 코드를 만드는 데 엄격한 발전 방식을 기술하고 있다.[54] "모던 펄"[55]이라는 책이 이 생각의 가장 눈에 띄는 표준 주자가 될 수도 있지만, 계몽된 펄 조직과[56] 같은 다른 집단이 그 원인을 떠맡았다.

2012년 말과 2013년에 Perl 5의 대체 구현을 위한 몇 가지 프로젝트가 시작되었다. 라쿠도 펄 팀이 Perl6에서 Perl5를,[57] 스테반 리틀과 친구들이 Perl6에서 Moe를,[58] Reini Urban에서 Perl11 팀이 p2[59], Gperl by Goccy가,[60] 그리고 Perll11 프로젝트와 제휴한 Kickstarter 프로젝트인 Rperl이 perl을 맡았다.[61]

2020년 이후

2020년 6월 펄 7이 펄 5의 후임으로 발표되었다.[62] 펄 7은 당초 2021년 상반기에 출시될 예정으로 Perl 5.32를 기반으로 하고, 후보들을 더 빨리 출시할 예정이었다.[63] 이 계획은 2021년 5월에 지정된 기준선으로 사용하기 위해 출시 기간이나 버전 Perl 5 없이 개정되었다.[64] 펄 7이 출시되면 펄 5는 장기 정비에 들어간다. 지원되는 Perl [65]5 버전은 중요한 보안 및 버그 수정을 계속 제공함

기호

낙타

오렐리 미디어가 사용하는 낙타 기호

오릴리 미디어가 출판한 프로그래밍 펄은 표지에 드로메다리 낙타 그림이 그려져 있으며 흔히 '카메라북'[66]이라고 불린다. 이 이미지는 일반적인 해커 엠블럼뿐만 아니라 Perl의 비공식적인 상징이 되어 티셔츠와 다른 옷가지에 등장하게 되었다.[citation needed]

오레일리는 이 이미지를 상표로 소유하고 있지만 비상업적 용도로 사용권을 부여하고 있어 www.perl.com에 대한 승인과 링크만 있으면 된다. 상업용 면허는 건별로 결정된다.[67] 오레일리는 또한 비상업적 사이트에는 "Perl 프로그래밍 공화국" 로고를, 펄을 사용하는 사이트에는 "Powered by Perl" 버튼을 제공한다.[67]

양파

펄 파운데이션이 사용한 양파 로고

펄 재단은 자회사인 펄몽거스, 펄몽크스, Perl.org 등에 라이선스하는 대체 기호인 양파를 소유하고 있다.[68] 상징은 진주양파대한 시각적인 말장난이다.[69]

랩터

대체 Perl 5 로고

모히리셔스를 만든 세바스찬 리델은 랩터 공룡을 묘사한 로고를 만들었는데, 이 로고는 CC-SA 라이선스 버전 4.0으로 이용할 수 있다.[70] 랩터의 아날로그는 2010년부터 Matt S Trawt에 의해 주어진 일련의 대화에서 나온다.[71]

개요

월에 따르면 펄은 두 개의 슬로건을 가지고 있다. 첫 번째는 흔히 TMTOWTDI로 알려진 "한 가지 이상의 방법이 있다"이다. 두 번째 슬로건은 "쉬운 일은 쉬워야 하고 힘든 일은 가능해야 한다"[15]이다.

특징들

Perl의 전체적인 구조는 대체로 C에서 유래한다. Perl은 변수, 표현식, 할당문, 가새 지연 블록, 제어 구조서브루틴을 포함하는 절차상의 특성이다.[citation needed]

펄은 또한 셸 프로그래밍에서 특징을 취한다. 모든 변수에는 선행 시그널이 표시되어 있어 변수를 문자열로 직접 보간할 수 있다. 그러나 셸과 달리 펄은 변수에 대한 모든 액세스에 시그널을 사용하며, 시그널을 사용하는 대부분의 다른 프로그래밍 언어와 달리, 시그널은 변수의 유형이 아니라 표현식의 유형을 나타낸다. 예를 들어, 배열은 "@"라는 기호로 표시되지만(예: @arrayname(), 배열의 개별 멤버는 스칼라 시그닐 "$"(예: $arrayname[3]Perl은 또한 셸 프로그래밍에 자주 사용되는 도구를 제공하는 많은 내장 기능을 가지고 있다(이러한 도구들 중 다수는 셸 외부의 프로그램에 의해 구현되지만). 예를 들어 운영체제 설비를 호출한다.[citation needed]

Perl은 AWK에서 해시("관련 배열")를, Sed에서 정규식을 취한다. 이것은 많은 구문 분석, 텍스트 처리 및 데이터 관리 작업을 단순화한다. Lisp과 공유는 블록의 마지막 값을 암시적으로 반환하는 것이며, 모든 문장은 더 큰 표현 자체에서 사용될 수 있는 표현이기도 하다.[citation needed]

펄 5는 복잡한 데이터 구조, 1등급 기능(즉, 값으로 폐쇄), 객체 지향 프로그래밍 모델을 지원하는 기능을 추가했다. 여기에는 참조, 패키지, 클래스 기반 메서드 디스패치컴파일러 명령과 함께 어휘 범위 변수가 포함된다(예: strict 실용주의. Perl 5와 함께 도입된 주요 추가 기능은 코드를 재사용 가능한 모듈로 패키징하는 기능이었다. 이후 월은 "펄5의 모듈 시스템의 전체 목적은 펄 코어보다는 펄 문화의 성장을 촉진하는 데 있었다"[72]고 밝혔다.

Perl의 모든 버전은 자동 데이터 타이핑과 자동 메모리 관리를 한다. 통역사는 프로그램에 포함된 모든 데이터 객체의 유형과 저장 요건을 알고 있다. 통역사는 참조 카운트를 사용하여 필요에 따라 저장소를 할당하고 개방한다(수동 개입 없이 원형 데이터 구조를 할당 해제할 수 없음). 예를 들어 숫자에서 문자열로의 변환과 같은 법적 유형 변환런타임에 자동으로 수행되며, 잘못된 유형 변환은 치명적인 오류다.[citation needed]

디자인

펄의 설계는 컴퓨터 산업의 세 가지 광범위한 동향인 하드웨어 비용 하락, 인건비 상승, 컴파일러 기술 개선 등에 대한 대응으로 이해할 수 있다. Fortran과 C와 같은 많은 초기 컴퓨터 언어는 값비싼 컴퓨터 하드웨어를 효율적으로 사용하는 것을 목표로 했다. 이와는 대조적으로, 펄은 컴퓨터 프로그래머들이 더 빠르고 쉽게 프로그램을 쓸 수 있도록 설계되었다.[citation needed]

Perl은 더 많은 CPU와 메모리 요구 사항을 희생시키면서 프로그래머의 작업을 용이하게 하는 많은 기능을 가지고 있다. 여기에는 자동 메모리 관리, 동적 타이핑, 문자열, 목록 및 해시, 정규식, 자기성찰, 그리고 a가 포함된다. eval() 기능을 발휘하다 펄은 Zero One Infinity 규칙과 유사한 개념인 "[66]내장된 제한 없음" 이론을 따른다.[citation needed]

월은 언어학자로서 훈련을 받았으며, 펄의 디자인은 언어 원리에 의해 매우 많이 알려진다. 예를 들면 허프먼 코딩(공통구조는 짧아야 한다), 좋은 엔드 웨이트링(중요한 정보가 먼저여야 한다), 그리고 많은 언어 원시성 집합이 있다. 펄은 인간이 쓰기에는 간결하고 자연스러운 언어구성을 선호하는데, 심지어 펄 통역사를 복잡하게 만드는 곳에서도 그렇다.[73]

펄의 구문에는 '다른 사물은 다르게 보여야 한다'[74]는 생각이 반영돼 있다. 예를 들어, 스칼라, 배열, 해시는 서로 다른 선도적인 시그널을 가지고 있다. 배열 인덱스와 해시 키는 다른 종류의 브레이스를 사용한다. 문자열과 정규식은 표준 구분자가 다르다. 이러한 접근방식은 단순하고 보편적인 상징적 표현으로 구성된 동일한 기본 구문이 모든 목적에 사용되는 Lisp와 같은 언어와 대조될 수 있다.[citation needed]

Perl은 특정한 프로그래밍 패러다임(절차적, 객체 지향적, 기능적 또는 기타)을 강요하거나 프로그래머가 그들 중에서 선택하도록 요구하지도 않는다.[citation needed]

펄어족 언어와 그것을 둘러싸고 있는 공동체 및 문화 모두에 대해 광범위한 실용적 고집이 있다. Perl 프로그래밍의 서문은 "Perl은 당신의 일을 완수하기 위한 언어"[15]이다. 이것의 한 가지 결과는 Perl이 깔끔한 언어가 아니라는 것이다. 그것은 많은 특징들을 포함하고, 그것의 규칙에 대한 예외를 허용하며, 구문학적 모호성을 해결하기 위해 휴리스틱스를 사용한다. 컴파일러의 용서적인 성격 때문에 벌레는 때때로 찾기 어려울 수 있다. 펄의 기능 설명서는 목록과 스칼라 컨텍스트에 있는 내장 기능의 변형 동작에 대해 "일반적으로 일관성을 원하지 않는 한, 그들은 당신이 원하는 대로 한다"[75]고 언급하고 있다.

Perl 5를 통한 Perl 버전에 대해서는 Perl 언어에 대한 서면 사양이나 표준이 존재하지 않으며, 현재 버전의 Perl에 대한 것을 만들 계획은 없다. 통역관의 구현은 단 한 가지뿐이며, 언어는 그것과 함께 진화해 왔다. 그 통역사는 기능 테스트와 함께 언어의 사실상의 사양으로 서 있다. 그러나 Perl 6은 규격에서 시작되었고,[76] 여러 프로젝트는[77] 규격의 일부 또는 전체를 구현하는 것을 목표로 한다.[citation needed]

적용들

Perl은 많은 표준 및 타사 모듈의 가용성에 의해 복합적으로 다양한 애플리케이션을 가지고 있다.

Perl은 주로 CGI 스크립트를 작성하는 데 사용되어 왔다. Perl에서 작성된 대형 프로젝트에는 cPanel, Slash, Bugzilla, RT, TWiki, Movable Type이 포함된다. Perl을 광범위하게 사용하는 높은 트래픽의 웹사이트에는 Priceline.com, Craigslist,[78] IMDb,[79] LiveJournal, DuckGo,[80][81] Sl, Sl, SlD티켓마스터가 있다. PHPPython 대신 웹 개발을 위해 인기 있는 LAMP 기술 스택의 선택적 구성요소이기도 하다. 펄은 데비안 리눅스 배포에서 시스템 프로그래밍 언어로 광범위하게 사용된다.[82]

Perl은 상호운용하도록 특별히 설계되지 않은 시스템과 인터페이스를 한데 묶는 글루언어로, 즉, 보고서 작성과 같은 작업에 대해 대량의 데이터를 변환하거나 처리하는 「데이터 멍[83]에 자주 사용된다. 사실 이러한 강점은 밀접하게 연결되어 있다. 이 조합은 특히 "원라이너 프로그램"이라고 불리는 짧은 프로그램이 단일 명령줄에서 입력되고 실행될 수 있기 때문에 Perl을 시스템 관리자에게 인기 있는 다목적 언어로 만든다.[citation needed]

Perl 코드는 Windows와 Unix를 통해 휴대할 수 있다. 이러한 코드는 소프트웨어 공급업체(COTS와 맞춤형 모두)가 소프트웨어 빌드 및 배포 스크립트의 패키징과 유지보수를 단순화하기 위해 자주 사용한다.[citation needed]

Perl/TkwxPerl은 일반적으로 Perl 스크립트에 그래픽 사용자 인터페이스를 추가하는 데 사용된다.

실행

Perl은 Perl과 C로 쓰여진 많은 모듈 모음과 함께 C로 쓰여진 핵심 통역기로서 구현된다. 2010년 현재, 통역자는 C 코드의 15만 줄이며, 일반적인 컴퓨터 아키텍처에서 1MB 실행 가능으로 컴파일한다. 또는, 통역사를 링크 라이브러리에 컴파일하여 다른 프로그램에 포함시킬 수 있다. 배포에는 약 500개의 모듈이 있으며, 20만개의 Perl 라인과 35만개의 C 코드(모듈의 C 코드는 문자 인코딩 테이블로 구성됨)[citation needed]로 구성되어 있다.

통역사는 객체 지향적인 구조를 가지고 있다. Perl 언어의 모든 요소(scalar, 어레이, 해시, 코드refs, 파일 핸들)는 C 구조체에서 해석기로 표현된다. 이러한 구조물에 대한 운영은 대규모의 매크로, 타이페프 및 함수에 의해 정의된다. 이것들은 Perl C API를 구성한다. Perl API는 미개척자에게 어리둥절할 수 있지만, 그것의 진입점은 그것을 사용하는 사람들에게 지침을 제공하는 일관된 이름 체계를 따른다.[citation needed]

펄 통역사의 삶은 크게 컴파일 단계와 실행 단계로 나뉜다.[84] 펄에서는 통역사 라이프사이클의 주요 단계다. 각 통역은 각 단계를 한 번만 거치고, 그 단계는 정해진 순서에 따라 진행된다.[citation needed]

Perl의 컴파일 단계에서 일어나는 일은 대부분 컴파일이며, Perl의 실행 단계에서 일어나는 일은 대부분 실행이지만 상당한 예외가 있다. Perl은 컴파일 단계에서 Perl 코드를 실행할 수 있는 기능을 중요하게 이용한다. 펄은 또한 실행 단계로의 컴파일을 지연시킬 것이다. 어떤 순간에 실제로 일어나고 있는 처리의 종류를 나타내는 용어는 컴파일 시간실행 시간이다. Perl은 컴파일 단계 중 대부분의 지점에서 컴파일 시간을 갖지만, 실행 단계 중 컴파일 시간을 입력할 수도 있다. 에 전달된 문자열 인수의 코드 컴파일 시간 eval 기본 제공은 실행 단계에서 발생한다. Perl은 컴파일 단계 중에 실행 시간에 있는 경우가 많으며 실행 단계의 대부분을 실행 시간에 사용한다. 코드인 BEGIN 블록은 런타임에 실행되지만 컴파일 단계에서 실행된다.

컴파일할 때 인터프리터는 Perl 코드를 구문 트리에 구문 분석한다. 런타임에 트리를 산책시켜 프로그램을 실행한다. 텍스트는 한 번만 구문 분석하며, 구문 트리는 실행되기 전에 최적화 대상이 되기 때문에 실행이 비교적 효율적이다. 구문 트리의 컴파일 시간 최적화는 일정한 접힘과 컨텍스트 전파를 포함하지만, 핍홀 최적화도 수행된다.[citation needed]

Perl은 컴파일 단계에서 실행된 런타임 코드에 의해 파싱이 영향을 받을 수 있기 때문에 튜링 완료 문법을 가지고 있다.[85] 따라서 Perl은 직선 Lex/Yacc 렉서/파서 조합으로 구문 분석할 수 없다. 대신 통역사가 자체 렉서(Lexer)를 구현해 언어의 모호성을 해소하기 위해 변형된 GNU 바이슨 파서(bison parser)와 조율한다.[citation needed]

흔히 '펄만이 펄을 파스할 수 있다'[86]고 하는데, 펄 통역()perl만이 펄 언어()를 파스할 수 있다는 뜻이지만, 이마저도 일반적으로 사실이 아니다. 펄 통역사는 컴파일 단계에서 튜링 기계를 시뮬레이션할 수 있기 때문에 모든 경우에 파싱을 완료하기 위해서는 정지 문제를 결정해야 한다. 중단 문제가 해결되지 않는 것은 오랜 결과로서, 따라서 펄조차 항상 구문 분석할 수 없다. Perl은 자신의 컴파일 단계에서 사용자에게 그것의 완전한 프로그래밍 파워에 대한 접근 권한을 부여하는 특이한 선택을 한다. 이론적 순수성 측면에서는 비용이 높지만 실제적인 불편은 드물 것으로 보인다.[citation needed]

소스 코드 분석기 및 자동 입력기 등 Perl 구문을 분석하는 다른 프로그램들은 모호한 구문 구조뿐만 아니라 일반 사례에서 Perl 구문 분석의 불분명함과도 싸워야 한다. 아담 케네디의 PPI 프로젝트는 Perl을 실행 가능한 코드(Perl 그 자체도 항상 할 수 없는)로 구문 분석하는 대신 Perl 코드를 문서로 구문 분석(문서로서의 무결성 유지)하는 데 초점을 맞췄다. "파싱 펄이 '할팅 문제'에 시달리고 있다"[87]고 처음 추측한 사람은 케네디였다.[88]

Perl은 핵심 Perl 언어에 대한 25만개 이상의 기능 테스트와 핵심 모듈에 대한 25만개 이상의 기능 테스트로 배포된다. 이것들은 정상적인 제조 과정의 일부로 실행되며 통역사와 그것의 핵심 모듈들을 광범위하게 연습한다. Perl 개발자들은 통역사의 변경사항이 소프트웨어 버그를 도입하지 않도록 기능 테스트에 의존한다. 또한, 통역사가 자신의 시스템에서 기능 테스트를 통과한다고 보는 Perl 사용자들은 그것이 제대로 작동하고 있다는 높은 자신감을 가질 수 있다.[citation needed]

유용성

Perl은 Artic License[5][6] 1.0과 GNU General Public License에 따라 이중 면허를 받는다.[7] 배포는 대부분의 운영 체제에서 사용할 수 있다. 특히 유닉스 및 유닉스 유사 시스템에 널리 보급되어 있지만, 대부분의 최신 플랫폼(그리고 많은 구식)에 포팅되어 있다. 보고된 예외는 6개에[citation needed] 불과하지만 Perl은 모든 POSIX 호환 플랫폼 또는 기타 호환 플랫폼의 소스 코드에서 컴파일할 수 있다.[89]

고전적인 Mac OS 환경에 필요한 특이한 변화 때문에, MacPerl이라는 특별한 포트가 독립적으로 선적되었다.[90]

포괄적 Perl Archive Network는 지원되는 플랫폼의 전체 목록과 각 플랫폼에서 사용 가능한 배포에 대한 링크를 제공한다.[91] 또한 CPAN은 핵심 Perl 분포의 일부가 아닌 공개적으로 사용할 수 있는 Perl 모듈의 원천이기도 하다.[citation needed]

창문들

Microsoft Windows 사용자는 일반적으로 Win32용 Perl의 기본 이진 분포 중 하나를 설치하며, 가장 일반적으로 Strawberry Perl 또는 ActivePerl을 설치한다. 윈도우즈 아래의 소스 코드에서 Perl을 컴파일하는 것은 가능하지만, 대부분의 설치에는 필요한 C 컴파일러와 빌드 도구가 부족하다. 이것은 또한 특히 C에 부분적으로 쓰여진 모듈들을 CPAN으로부터 설치하는 것을 어렵게 만든다.[citation needed]

ActivePerl은 ActiveState의 폐쇄 소스 배포로, 핵심 Perl 릴리즈를 추적하는 정규 릴리즈가 있다.[92] 이전에 배포된 제품에는 일반적인 Perl 모듈의 설치, 제거, 업그레이드 및 사용을 관리하는 인기 도구인 [93]Perl 패키지 관리자(PPM)가 포함되었지만, 이 도구는 ActivePerl 5.28로 단종되었다.[94] 또한 Perl 언어를 구현하는 WSH(Windows Script Host) 엔진인 PerlScript도 포함되어 있다. Visual Perl은 Visual Studio 에 Perl을 추가하는 ActiveState 도구 입니다.NET 개발 제품군. VBScript-to-Perl 컨버터와 Windows용 Perl 컴파일러, 그리고 Perl에 대한 awksed의 변환기도 이 회사에서 생산되었고 2002년과 그 이후로는 그들의 배포와 코모도 IDE 그리고 그 첫 번째를 제외한 모든 것을 Windows용 ActiveState CD에 포함되었다.[95]

스트로베리펄은 윈도용 오픈소스 유통이다. 피드백과 요청이 들어오면 새로운 모듈을 포함해 2008년 1월부터 분기별로 정기적으로 출시하고 있다. 스트로베리펄은 XS 모듈 편성을 포함한 다른 플랫폼에 표준 Perl 배포와 같은 모듈을 설치할 수 있는 것을 목표로 한다.[citation needed]

Cygwin 에뮬레이션 레이어는 윈도우에서 Perl을 실행하는 또 다른 방법이다. Cygwin은 Windows에서 Unix와 유사한 환경을 제공하며, Perl과 CPAN 모두 Cygwin 설정 프로그램에서 표준 사전 컴파일된 패키지로 이용할 수 있다. 싸이그윈도 gcc를 포함하고 있기 때문에 출처로부터 펄을 편찬하는 것도 가능하다.[citation needed]

perl 실행 파일은 다른 스크립팅 도구와 함께 디렉토리의 여러 Windows 리소스 키트에 포함되어 있다.[citation needed]

Perl 구현에는 MKS 툴킷, Interix(Unix용 Windows Services의 이전 구현 기반) 및 UWIN이 함께 제공된다.[citation needed]

데이터베이스 인터페이스

Perl의 텍스트 처리 기능은 SQL 조회 생성에 사용될 수 있다; 어레이, 해시, 자동 메모리 관리를 통해 반환된 데이터를 쉽게 수집하고 처리할 수 있다. 예를 들어, Tim Bunce의 Perl DBI애플리케이션 프로그래밍 인터페이스(API)에서 API에 대한 인수는 SQL 쿼리의 텍스트가 될 수 있으므로, 동시에 여러 언어로 프로그래밍할 수 있다(예: HTML, JavaScript, SQL을 사용하여 웹 페이지를 생성하기 위해 본 문서에서). Perl 변수 보간법을 사용하여 각 SQL 쿼리를 프로그래밍 방식으로 사용자 정의하고, Perl 어레이 또는 해시를 각 SQL 쿼리의 결과 데이터 세트를 프로그래밍 방식으로 보유하는 구조로서 Perl 변수 보간법을 사용하면 Perl 하위 프로그램에 의한 대량의 데이터를 처리하기 위한 높은 수준의 메커니즘을 사용할 수 있다.[96] Perl의 초기 버전에서는 번역기를 클라이언트측 데이터베이스 라이브러리와 다시 연결하여 데이터베이스 인터페이스가 생성되었다. 이는 매우 어려웠기 때문에 가장 중요하고 널리 사용되는 데이터베이스 중 일부에 대해서만 수행되었으며, 결과물을 제한하였다. perl 한 번에 하나의 데이터베이스 인터페이스만 사용할 수 있는 실행 파일.[97]

Perl 5에서 데이터베이스 인터페이스는 Perl DBI 모듈에 의해 구현된다. DBI(Database Interface) 모듈은 Perl 응용프로그램에 대한 단일 데이터베이스 독립 인터페이스를 제공하는 반면, DBD(Database Driver) 모듈은 50여 개의 다른 데이터베이스에 액세스하는 세부사항을 처리한다. 대부분의 ANSI SQL 데이터베이스용 DBD 드라이버가 있다.[98]

DBI는 데이터베이스 핸들 및 쿼리에 캐슁 기능을 제공하므로 mod perl과 같은 장기 실행 환경에서 성능이 크게 향상되어 대용량 시스템이 Slashdot 효과와 같이 로드 스파이크를 방지하는 데 도움이 된다.[99][100]

현대의 Perl 애플리케이션, 특히 Catalyst같은프레임워크를 사용하여 작성된 애플리케이션에서 DBI 모듈은 종종 DBIx와 같은 객체 관계 매퍼를 통해 간접적으로 사용된다.클래스, 클래스::DBI[101] 또는 로즈:DB[102]:SQL 쿼리를 생성하고 애플리케이션 작성자에게 투명하게 데이터를 처리하는 개체.[103]

비교실적

컴퓨터 언어 벤치마크 게임은 전형적인 프로그래밍 문제의 구현 성능을 여러 프로그래밍 언어로 비교한다.[104] 제출된 Perl 구현은 일반적으로 메모리 사용 주파수의 하이엔드에 대해 수행되며 다양한 속도 결과를 제공한다. 벤치마크 게임에서 펄의 활약은 해석 언어의 전형이다.[105]

대형 펄 프로그램은 실행될 때마다 소스를 컴파일해야 하기 때문에 컴파일된 언어의 유사한 프로그램보다 더 느리게 시작한다. YAPC에서의 강연에서::유럽 2005 컨퍼런스 및 후속 기사 "A Simitious Start" 장 루이 레로이(Jean-Louis Leroy)는 펄 통역사가 너무 큰 경로 내에 있는 모듈을 찾는데 상당한 시간을 소비했기 때문에 Perl 프로그램이 예상보다 훨씬 더 오래 걸린다는 것을 발견했다.[106] 자바, 파이톤, 루비와 달리 펄은 사전 컴파일만 실험적으로 지원한다.[107] 그러므로 Perl 프로그램은 모든 실행에서 이 오버헤드 위약금을 지불한다. 일반적인 프로그램의 실행 단계는 상각된 시작 시간이 크지 않을 정도로 길지만, 매우 짧은 실행 시간을 측정하는 벤치마크는 이러한 오버헤드로 인해 왜곡될 가능성이 높다.[108]

이러한 상황을 개선하기 위해 많은 도구들이 도입되었다. 첫 번째 그러한 도구는 작은 Perl 프로그램이 빠르게 실행된 가장 일반적인 이유들 중 하나인 CGI 웹 개발로 아파치의 mod perl이었다. 마이크로소프트 ISAPI를 통해 ActivePerl은 유사한 성능 향상을 제공한다.[109]

Perl 코드가 컴파일되면 C 또는 C++와 같이 컴파일된 언어로 작성된 프로그램에 일반적으로 존재하지 않는 실행 단계 동안 추가 오버헤드가 발생한다. 그러한 오버헤드의 예로는 바이트 코드 해석, 참조 카운트 메모리 관리, 동적 유형 확인 등이 있다.[110]

최적화

가장 중요한 루틴은 다른 언어(: C)로 쓸 수 있는데, 간단한 인라인 모듈이나 보다 복잡하지만 유연한 XS 메커니즘을 통해 Perl에 연결할 수 있다.[111]

펄 5

보통 "Perl"이라고 불리는 언어인 Perl 5는 계속해서 활발하게 개발되고 있다. Perl 5.12.0은 2010년 4월 Perl 6의 설계에 영향을 받은 일부 새로운 특징으로 출시되었으며 [47][112]Perl 5.14.1(2011년 6월 17일 출시), Perl 5.16.1(2012년 8월 9일 출시),[113] Perl 5.18.0(2013년 5월 18일 발표)이 뒤를 이었다. Perl 5 개발 버전은 월 단위로 출시되며, 주요 출시 버전은 1년에 한 번 나온다.[114]

다른 프로그래밍 언어에 대한 유사한 검색과 비교했을 때 "Perl 프로그래밍"에 대한 인터넷 검색의 상대적 비율은 2005년 약 10%에서 2011년 약 2%로, 2020년에는 약 0.7%로 꾸준히 감소했다.[115]

라쿠 (Perl 6)

Camelia[116], Perl 6 프로젝트의 로고

2000년 펄 컨퍼런스에서 존 오완트는 주요 언어 이니셔티브를 위한 사례를 만들었다.[117] 이로 인해 Perl 6.라고 불리는 언어 재설계 작업에 착수하기로 결정했다. 새로운 언어 기능에 대한 제안은 300개 이상의 RFC를 제출한 Perl 커뮤니티에 전반적으로 요청되었다.[118]

월은 그 후 몇 년 동안 RFC를 소화하고 Perl 6을 위한 일관된 프레임워크로 합성했다. 그는 Perl 프로그래밍의 장에 해당하는 번호로 "사설"이라고 불리는 일련의 문서에서 Perl 6에 대한 자신의 디자인을 제시했다. 2011년 1월 현재 Perl 6의 개발 사양을 시놉시스라는 설계 문서에 캡슐화하여 아포칼립스에 해당하는 번호를 부여하였다.[119]

월이 감독하는 브래들리 M. 쿤의 논문 작업은 펄의 런타임으로 자바 가상 머신을 사용할 수 있는 가능성을 고려했다.[120] 쿤의 논문은 이러한 접근법이 문제가 된다는 것을 보여주었다. 2001년, Perl 6는 앵무새라고 불리는 교차 언어 가상 머신으로 실행하기로 결정되었다. 이것은 앵무새를 목표로 하는 다른 언어가 CPAN에 고유하게 접근하여 어느 정도의 교차 언어 개발을 가능하게 한다는 것을 의미할 것이다.[citation needed]

2005년 오드리 탕하스켈에서 펄 6를 구현한 퍼그 프로젝트를 만들었다. 이는 언어 설계자가 탐색할 수 있도록 하는 Perl 6 언어의 시험 플랫폼 역할을 하고 있으며, 계속 작용하고 있다. 퍼그 프로젝트는 라이베라 챗 #라쿠 IRC 채널을 중심으로 활발한 펄/하스켈 교차언어 커뮤니티를 낳았다. Perl 6 디자인 팀에 의해 많은 기능적 프로그래밍 영향이 흡수되었다.[121]

2012년에 Perl 6 개발은 주로 두 가지 컴파일러에 집중되었다.[122]

  1. 라쿠도, 앵무새 가상 머신과 자바 가상 머신에 실행 중인 구현.[123]
  2. '공통 언어 런타임'을 목표로 하는 니에차(Niecommon Language Runtime.

2013년에는 주로 라쿠도를 위해 설계된 C 언어 기반 가상 머신MoarVM("Metamodel On A Runtime")이 발표되었다.[124]

2019년 10월, Perl 6는 라쿠로 개명되었다.[125]

2017년 현재 라쿠도 구현과 MoarVM만 활발하게 개발 중이며, 자바 가상 머신, 자바스크립트 등 다른 가상 머신이 지원되고 있다.[126]

펄 7

Perl 7은 Perl 5의 후속으로 2020년 6월 24일 "The Perl Conference in the Cloud"에서 발표되었다.[127][128] Perl 5.32에 근거하여 Perl 7은 현대의 Perl 5 코드와 역호환되도록 설계되었으며, Verl 5 코드에는 보일러 플레이트(프라그마) 헤더를 추가해야 한다. use compat::perl5; 호환성을 유지하지만 현대식 코드는 보일러 플레이트의 일부를 떨어뜨릴 수 있다.

펄 커뮤니티

펄의 문화와 공동체는 언어 자체와 함께 발전해 왔다. 유스넷은 펄이 처음 소개된 공공장소였지만, 그 진화 과정에서 펄의 커뮤니티는 월드 와이드 웹의 도입 등 인터넷 기반의 서비스 확대에 의해 형성되었다. 펄을 둘러싸고 있는 커뮤니티는 사실 월의 첫 번째 '양파의 상태' 담화의 주제였다.[129]

양파 상태

State of the 양파(State of the Epane)는 월이 매년 펄과 그 지역사회의 발전에 대해 발표하는 기조식 요약본의 이름이다. 그들은 펄의 문화, 넓은 해커 문화, 월의 언어적 배경, 때때로 그의 가정 생활, 그리고 때로는 그의 기독교적 배경까지 언급하는 그의 독특한 유머가 특징적이다.[130]

각각의 강연은 다양한 펄 컨퍼런스에서 처음 주어지고, 결국 온라인으로도 출판된다.

펄 파스타임

재프스
이메일, 유스넷, 게시판에 "Just another Perl hacker" (JAPH) 프로그램이 랜달 L에 의해 유래된 일반적인 경향이다. 슈워츠, 최초의 프로 펄 트레이너 중 한 명이다.[131] 펄문화와 유사하게 펄 프로그래머는 펄 해커로 알려져 있으며, 이로부터 "Just another Perl hacker"라는 문구를 인쇄하기 위해 짧은 프로그램을 작성하는 관행이 파생된다. 원래 개념의 정신에서, 이러한 프로그램들은 적당히 난독화되고 이메일이나 유스넷 메시지의 서명에 들어맞을 정도로 짧다. 슈워츠가 개발한 "캐논어" JAPP는 비록 이것이 종종 생략되지만, 끝에 쉼표를 포함한다.[132]
펄 골프
펄 '골프'는 펄 프로그램에서 사용하는 문자(키 '스트로크')를 맨 최소로 줄이는 놀이인데, 골프 선수들이 라운드에서 가능한 한 적게 찍으려고 애쓰는 방식과 비슷하다. 이 문구의 첫 번째[133] 용어는 새로운 사람을 가르치기 위한 보행자 코드와 경험 많은 펄 프로그래머들을 즐겁게 할 수 있는 테르스 해킹의 차이를 강조했는데, 그 예로는 유스넷 게시물 등에서 이미 서명에 사용된 JAPP가 있다. 비슷한 스턴트는 지난 수십 년 동안 APL 언어에서 이름 없는 오락이었다. Perl을 사용하여 RSA 암호화를 수행하는 프로그램을 작성함으로써 이러한 오락에 대한 광범위하고 실질적인 관심을 불러일으켰다.[134] 이후 다른 언어에서는 '코드 골프'라는 말이 심심풀이로 적용됐다.[135] 펄 골프 대재앙은 2000년 7월 캘리포니아 몬터레이에서 펄 컨퍼런스 4.0에서 열렸다.
난독화
C와 마찬가지로 난독화된 코드 대회는 1990년대 후반에 잘 알려진 오락거리였다. 난독화된 콘테스트는 펄의 통사적 유연성의 큰 덕목을 이룬 1996년부터 2000년까지 펄 저널이 개최한 대회였다. 유스넷 시그니처 블록 스타일로 76자 4줄에 맞는 프로그램에 대해서는 공간을 효율적으로 활용한 프로그램인 "가장 강력한"과 "최상의 4행 시그니처"와 같은 카테고리에 대한 상이 수여되었다.[136]
펄 시는 합법적인 펄 코드로 편찬될 수 있는 시를 쓰는 관습으로, 예를 들어 블랙펄로 알려진 작품을 말한다. 펄 시는 펄 언어에서 사용되는 많은 수의 영어 단어들에 의해 가능해진다. PerlMonks에서는 정기적으로 새로운 시들이 지역사회에 제출된다.[137]

펄 온 IRC

언어와 일부 모듈에 대한 지원을 제공하는 다수의 IRC 채널이 있다.

IRC 네트워크 채널
irc.libera.chat #perl #raku
irc.perl.org #mosse #moss #moss #dbix-cl #perl-help #perl-help #moorhackers #sdl #win32 #moorchain #padre #moss #moss #mosse.
irc.slashnet.org #perlmonks
irc.oftc.net #perl
irc.efnet.net #perlhelp
irc.rizon.net #perl
irc.debian.org #debian-perl (Debian용 Perl 모듈 패키지화)

CPAN Acme

또한 CPAN에는 순수하게 엔터테인먼트를 위해 쓰여진 코드의 많은 예들이 있다. Lingua::Romana::Perligata예를 들어, 라틴어로 프로그램을 쓸 수 있다.[138] 이러한 프로그램을 실행하면 모듈은 소스 코드를 일반 Perl로 변환하여 실행한다.[citation needed]

Perl 커뮤니티는 자연에서 재미있는 모듈(그러나 그 범위는 탐색적 또는 실험적 코드 또는 생산에 결코 사용되어서는 안 되는 다른 모듈까지 포함)을 위해 "Acme" 네임스페이스를 따로 설정했다. Acme 모듈 중 일부는 의도적으로 재미있는 방법으로 구현된다. 여기에는 다음이 포함된다. Acme::Bleach, 의 첫 번째 모듈 중 하나 Acme:: 네임스페이스는 프로그램의 소스 코드를 "확대"(즉, 모든 문자가 공백으로 대체됨)할 수 있지만 여전히 작동한다.[139][citation needed]

예시 코드

Perl의 이전 버전에서는 다음과 같이 Hello World 프로그램을 작성하였다.

인쇄하다 "안녕, 월드!\n"; 

다음은 주어진 시작 값에서 초를 카운트다운하는 보다 복잡한 Perl 프로그램이다.

#!/usr/bin/perl 사용하다 엄한; 사용하다 경고.;  나의 ( 달러화, 총액 );  달러화 = 총액 = 교대시키다(@ARGV);  스탠드아웃->자동 플러시(1);  하는 동안에 ( 달러화 ) {     활자화하다 ( "%s/%s \r 유지", 달러화--, 총액 );     잠을 자다 1; }  인쇄하다 "\n"; 

perl 통역기는 명령줄의 일회성 스크립트에도 사용할 수 있다. 다음 예(Bash와 같은 sh-호환 쉘에서 호출된 경우)는 현재 디렉토리에서 .txt로 끝나는 모든 파일의 문자열 "Bob"을 "Robert"로 변환한다.

$ perl -i.bak -lp -e 's/Bob/Robert/g' *.txt 

비판

펄은 비평가들에 의해 "라인 잡음"과 쓰기 전용 언어로 언급되어 왔다. 그러한 언급은 랜달 L이 쓴 Perl 4 자습서인 Learning Perl의 초판에 있었다. 슈워츠[140]첫 장에 이렇게 말했다: "그래, 가끔 펄은 미개척자들에게 줄 잡음처럼 보이지만, 숙련된 펄 프로그래머에게는 그것은 삶의 사명을 가진 체크섬된 줄 잡음처럼 보인다."[141] 그는 또 펄이 쓰기 전용 언어라는 비난은 '적절한 관리'[141]로 코딩하면 피할 수 있다고 밝혔다. Perl 개요 문서 perlintro는 내장 "마법" 스칼라 변수의 이름이 "구문 또는 선 노이즈처럼 보인다"[142]고 명시한다. 그러나 영어 모듈은 긴 영어 대안과 짧은 영어 대안을 모두 제공한다. perlstyle 문서에는 정규 표현식의 라인 노이즈는 다음을 사용하여 완화될 수 있다고 명시되어 있다. /x 공백을 추가하는 [143]수식어

Perl 6 FAQ에 따르면, Perl 6는 "대부분의 구두점 변수"를 제거하고 regex 구문을 소독하는 등 Perl 5 비평가들로부터 "라인 잡음" 주장을 이끌어내는 "일반적인 용의자"를 완화하기 위해 고안되었다.[144] Perl 6 FAQ는 또한 때때로 Perl의 라인 잡음이라고 불리는 것이 영어일부인 처럼 "언어의 실제 구문"이라고 명시하고 있다.[144] 2012년 12월 블로그 게시물에서 "Rakudo Perl 6은 실패했고 성인 감시를 받지 않는 한 계속 실패할 것"이라고 주장함에도 불구하고 색채는 Perl 6의 디자인은 "잘 정의된 문법"뿐만 아니라 "개선된 유형 시스템, 지능적인 변광성, 메타 연산자, 보다 명확한 시스템"을 가지고 있다고 밝혔다. 만연한 게으름과 같은 미세한 예절을 제공하는 [145]상황 그는 또한 "펄 6은 펄 5가 결여한 일관성과 일관성을 가지고 있다"[145]고 말했다.

참고 항목

참조

  1. ^ 위로 이동: "v13i001: Perl, a "replacement" for awk and sed, Part01/10". comp.sources.unix archives. Retrieved August 11, 2021.
  2. ^ "Perl 5.34.0 is now available!". www.nntp.perl.org. Retrieved May 21, 2021.
  3. ^ "Perl 5.32.1 is now available!". www.nntp.perl.org. Archived from the original on January 24, 2021. Retrieved January 24, 2021.
  4. ^ "Perl 5.35.4 is now available!". www.nntp.perl.org. Retrieved September 22, 2021.
  5. ^ 위로 이동: "The "Artistic License" - dev.perl.org". dev.perl.org. Archived from the original on July 24, 2018. Retrieved June 24, 2016.
  6. ^ 위로 이동: 2018년 7월 25일, Perl 5git 저장소에 있는 웨이백 머신Artic Archived 보관 - 파일
  7. ^ 위로 이동: "Perl Licensing". dev.perl.org. Archived from the original on January 22, 2011. Retrieved January 8, 2011.
  8. ^ Larry Wall. "Programming is Hard, Let's Go Scripting..." Archived from the original on July 28, 2017. Retrieved April 14, 2019. All language designers have their occasional idiosyncracies. I’m just better at it than most.
  9. ^ "About Perl". perl.org. Archived from the original on November 6, 2015. Retrieved April 20, 2013. "Perl" is a family of languages, "Perl 6" is part of the family, but it is a separate language that has its own development team. Its existence has no significant impact on the continuing development of "Perl 5".
  10. ^ "Path to Raku". GitHub. Archived from the original on November 12, 2020. Retrieved January 14, 2021. This document describes the steps to be taken to effectuate a rename of Perl 6 to Raku
  11. ^ Lapworth, Leo. "General Questions About Perl". Perl FAQ. Perl.org. Archived from the original on June 22, 2013. Retrieved February 24, 2012.
  12. ^ "perl(1): Practical Extraction/Report Language - Linux man page". Linux.die.net. Archived from the original on June 22, 2013. Retrieved July 23, 2013.
  13. ^ Sheppard, Doug (October 16, 2000). "Beginner's Introduction to Perl". dev.perl.org. Archived from the original on June 5, 2011. Retrieved January 8, 2011.
  14. ^ Ashton, Elaine (1999). "The Timeline of Perl and its Culture (v3.0_0505)". Archived from the original on January 11, 2013. Retrieved March 12, 2004.
  15. ^ 위로 이동: Wall, Larry; Christiansen, Tom; Orwant, Jon (July 2000). Programming Perl, Third Edition. O'Reilly Media. ISBN 978-0-596-00027-1.
  16. ^ "Language Evaluations". Archived from the original on March 10, 2015. Retrieved January 30, 2015. Perl's strongest point is its extremely powerful built-in facilities for pattern-directed processing of textual, line-oriented data formats; it is unsurpassed at this.
  17. ^ "You Used Perl to Write WHAT?!". January 24, 2008. Archived from the original on February 4, 2015. Retrieved February 4, 2015. perl has always been the go-to language for any task that involves pattern-matching input
  18. ^ "The Importance of Perl". Archived from the original on February 2, 2015. Retrieved February 4, 2015. Perl's unparalleled ability to process text...
  19. ^ Smith, Roderick W. (June 21, 2002). Advanced Linux Networking. Addison-Wesley Professional. p. 594. ISBN 978-0-201-77423-8.
  20. ^ Sheppard, Doug (October 16, 2000). "Beginner's Introduction to Perl". O'Reilly Media. Archived from the original on June 4, 2008. Retrieved July 27, 2008.
  21. ^ Raymond, Eric (December 23, 2003). "Swiss Army chainsaw". The Jargon File. Archived from the original on August 14, 2018. Retrieved November 29, 2014.
  22. ^ Leonard, Andrew. "The joy of Perl". Salon.com. Archived from the original on July 6, 2012. Retrieved June 5, 2012.
  23. ^ "How programs are measured Computer Language Benchmarks Game". benchmarksgame-team.pages.debian.net. Archived from the original on July 12, 2020. Retrieved October 5, 2020.
  24. ^ "RSA in 3 lines of perl - Everything2.com". everything2.com. Archived from the original on October 8, 2020. Retrieved October 5, 2020.
  25. ^ Richardson, Marjorie (May 1, 1999). "Larry Wall, the Guru of Perl". Linux Journal. Archived from the original on June 22, 2013. Retrieved January 3, 2011.
  26. ^ "perlfaq1: What's the difference between "perl" and "Perl"?". perldoc.perl.org - Perl 5 version 12.2 documentation. Archived from the original on May 12, 2013. Retrieved June 4, 2007.
  27. ^ Schwartz, Randal; foy, brian; Phoenix, Tom (June 16, 2011). Learning Perl. O'Reilly Media, Inc. p. 4. ISBN 978-1449313142. Perl is sometimes called the "Practical Extraction and Report Language," although it has also been called a "Pathologically Eclectic Rubbish Lister," among other expansions. It's actually a backronym, not an acronym, since Larry Wall, Perl’s creator, came up with the name first and the expansion later. That’s why "Perl" isn’t in all caps. There's no point in arguing that expansion is correct: Larry endorses both.
  28. ^ Wall, Larry. "perl - The Perl language interpreter". Perl 5 version 12.2 documentation. Archived from the original on June 22, 2013. Retrieved January 26, 2011.
  29. ^ "perl.perl5.porters archive". perl.org. Archived from the original on May 1, 2011. Retrieved January 13, 2011.
  30. ^ "perlhist — the Perl history records". Perl 5 version 12.2 documentation. perldoc.perl.org. Archived from the original on January 13, 2011. Retrieved January 21, 2011.
  31. ^ "CPAN". CPAN. Archived from the original on October 3, 2019. Retrieved May 8, 2017.
  32. ^ 위로 이동: "perl5004delta — what's new for perl5.004". Perl 5 version 12.2 documentation. perldoc.perl.org. Archived from the original on February 27, 2011. Retrieved January 8, 2011.
  33. ^ Patwardhan, Nathan; Siever, Ellen; Spainhour, Stephen (2002). Perl in a Nutshell, Second Edition. O'Reilly Media. ISBN 978-0-596-00241-1.
  34. ^ "perl5005delta - what's new for perl5.005". Perl 5 version 12.2 documentation. perldoc.perl.org. Archived from the original on February 3, 2011. Retrieved January 21, 2011.
  35. ^ "perlhist - the Perl history records". www.cpan.org. Archived from the original on September 16, 2020. Retrieved June 2, 2020.
  36. ^ "Perl Source". www.cpan.org. Archived from the original on June 1, 2017. Retrieved June 2, 2020.
  37. ^ "perl56delta - what's new for perl v5.6.0". Perl 5 version 12.2 documentation. perldoc.perl.org. Archived from the original on February 2, 2011. Retrieved January 21, 2011.
  38. ^ "perl56delta - what's new for perl v5.6.x". Perl 5 version 12.2 documentation. perldoc.perl.org. Archived from the original on November 18, 2010. Retrieved January 21, 2011.
  39. ^ Wall, Larry. "Apocalypse 1: The Ugly, the Bad, and the Good". Archived from the original on November 23, 2010. Retrieved January 8, 2011.
  40. ^ "perl58delta - what is new for perl v5.8.0". Perl 5 version 12.2 documentation. perldoc.perl.org. Archived from the original on November 21, 2010. Retrieved January 21, 2011.
  41. ^ "A Plan for Pugs". O'Reilly Media. March 3, 2005. Archived from the original on September 8, 2012. Retrieved January 27, 2011.
  42. ^ Tang, Audrey (April 21, 2010). "Re: How to Implement Perl 6 in Ten Years". PerlMonks. Archived from the original on May 11, 2011. Retrieved January 3, 2011.
  43. ^ Geoff Broadwell (August 8, 2005), OSCON 4.4: Inside Ponie, the Bridge from Perl 5 to Perl 6, O'Reilly ONLamp Blog, archived from the original on March 14, 2012, retrieved June 27, 2016
  44. ^ Jesse Vincent (August 23, 2006), Ponie has been put out to pasture, The Perl Foundation, archived from the original on June 27, 2009, retrieved January 15, 2019
  45. ^ "perl5100delta - what is new for perl 5.10.0". Perl 5 version 12.2 documentation. perldoc.perl.org. Archived from the original on December 21, 2010. Retrieved January 8, 2011.
  46. ^ "perlsyn - Perl syntax". Perl 5 version 12.2 documentation. perldoc.perl.org. Archived from the original on August 26, 2013. Retrieved January 21, 2011.
  47. ^ 위로 이동: "perl5120delta - what is new for perl v5.12.0". Perl 5 version 12.2 documentation. perldoc.perl.org. Archived from the original on January 4, 2011. Retrieved January 8, 2011.
  48. ^ "perldelta - what is new for perl v5.12.3". Perl 5 version 12.2 documentation. perldoc.perl.org. Archived from the original on June 8, 2011. Retrieved January 8, 2011.
  49. ^ "perl5140delta - what is new for perl v5.14.0 - metacpan.org". metacpan.org. Archived from the original on July 25, 2018. Retrieved July 22, 2017.
  50. ^ 위로 이동: "perldelta - what is new for perl v5.16.0". Perl 5 version 16.0 documentation. metacpan.org. Archived from the original on July 28, 2020. Retrieved May 21, 2012.
  51. ^ "perl5180delta - what is new for perl v5.18.0 - Perl programming language". Perl 5 version 18.0 documentation. metacpan.org. Archived from the original on October 29, 2013. Retrieved October 27, 2013.
  52. ^ "perl5200delta - what is new for perl v5.20.0 - Perl programming language". Perl 5 version 20.0 documentation. metacpan.org. Archived from the original on May 27, 2014. Retrieved May 27, 2014.
  53. ^ Perl 르네상스의 이정표 - Modern Perl Programming 2012년 10월 27일 Wayback Machine에 보관되었다. Modernperlbooks.com. 2013-07-17일에 검색됨.
  54. ^ 서문(Modern Perl 2011-2012) 웨이백 머신에 2012년 9월 28일 보관. Modernperlbooks.com. 2013-07-17일에 검색됨.
  55. ^ 2011년 12월 22일 웨이백머신보관색도 Onyx Neon Press에 의한 현대 Perl 2011-2012 에디션. Onyxneon.com. 2013-07-17일에 검색됨.
  56. ^ "Enlightened Perl". Enlightened Perl. Archived from the original on February 5, 2014. Retrieved September 28, 2012.
  57. ^ "YAPC::NA 2013 - June 3-5, Austin, Texas". Yapcna.org. June 4, 2013. Archived from the original on June 22, 2013. Retrieved April 11, 2014.
  58. ^ Little, Stevan (February 8, 2013). "What is Moe (a clarification) Stevan Little". Blogs.perl.org. Archived from the original on December 19, 2013. Retrieved April 11, 2014.
  59. ^ "p2 on potion". Perl11.org. February 7, 2004. Archived from the original on September 24, 2013. Retrieved April 11, 2014.
  60. ^ "goccy/gperl 路 GitHub". GitHub.com. Archived from the original on February 23, 2015. Retrieved April 11, 2014.
  61. ^ "rperl". RPerl.org. Archived from the original on October 18, 2014. Retrieved August 11, 2014.
  62. ^ "Perl 7 announced at Perl Conference in the Cloud". perlfoundation.org. June 24, 2020. Archived from the original on June 26, 2020. Retrieved June 24, 2020.
  63. ^ "Announcing Perl 7". perl.com. June 24, 2020. Archived from the original on June 24, 2020. Retrieved June 24, 2020.
  64. ^ Nicholas Clark (May 9, 2021). "Steering Council meeting #019 2021-05-06". www.nntp.perl.org. Archived from the original on May 18, 2021. Retrieved May 17, 2021. The plan remains that there will be a Perl 7 bump, but not immediately after 5.34.0 is released. ... We don’t think that we can deliver on [Perl 7] in 12 months.
  65. ^ Preparing for Perl 7d. leanpub.com. June 24, 2020. Archived from the original on June 25, 2020. Retrieved June 24, 2020.
  66. ^ 위로 이동: Schwartz, Randal L; Phoenix, Tom; Foy, Brian (December 6, 2007). Learning Perl, Third Edition. ISBN 978-0-596-00132-2.
  67. ^ 위로 이동: "The Perl Camel Usage and Trademark Information". O'Reilly Media. Archived from the original on April 25, 2018. Retrieved January 9, 2011.
  68. ^ "Perl Trademark". The Perl Foundation. Archived from the original on May 3, 2011. Retrieved January 9, 2011.
  69. ^ Gillmore, Dan (October 25, 1998). "Republic Of Perl". Chicago Tribune. Archived from the original on April 30, 2011. Retrieved January 10, 2011.
  70. ^ Riedel, Sebastian (January 18, 2012). "Perl 5 Raptor". Sebastian Riedel. Archived from the original on June 11, 2018. Retrieved November 12, 2017.
  71. ^ Trout, Matt (June 16, 2005). "State of the Velociraptor - Phase two". Shadowcat Systems Limited. Archived from the original on November 13, 2017. Retrieved November 12, 2017.
  72. ^ "title unknown". May 10, 1997. Usenet: 199705101952.MAA00756@wall.org.[데드링크]
  73. ^ Wall, Larry. "perl - The Perl 5 language interpreter - Perldoc Browser". perldoc.perl.org. Retrieved June 24, 2021.
  74. ^ Wall, Larry (March 1, 1997). "Wherefore Art, Thou?". Linux Journal. Archived from the original on December 9, 2010. Retrieved March 13, 2011.
  75. ^ "perlfunc - Perl builtin functions". Perl 5 version 12.2 documentation. perldoc.perl.org. Archived from the original on January 6, 2011. Retrieved January 10, 2011.
  76. ^ "Perl 6 Specification". The Perl 6 Project. Archived from the original on December 2, 2009. Retrieved January 27, 2011.
  77. ^ "Perl 6 Compilers". The Perl 6 Project. Archived from the original on December 2, 2009. Retrieved January 27, 2011.
  78. ^ Gilmore, W. J. (2010). Beginning PHP and MySQL: From Novice to Professional, Fourth Edition. Apress. p. 484. ISBN 978-1-4302-3114-1.
  79. ^ "IMDb Helpdesk: What software/hardware are you using to run the site?". Internet Movie Database. Archived from the original on March 9, 2017. Retrieved February 12, 2011.
  80. ^ DuckDuckGo는 많은 양의 검색 쿼리를 매일 450만 개의 쿼리로 처리한다. https://duckduckgo.com/traffic.html 2012년 2월 15일, Library of Congress Web Archives에 보관됨
  81. ^ DuckDuckGo는 Perl https://web.archive.org/web/20101231135106/http:///www.gabrielweinberg.com/blog/2009/03/duck-duck-go-architecture.html을 사용한다.
  82. ^ "Perl FAQ". Archived from the original on August 6, 2019. Retrieved August 6, 2019. Perl is used quite extensively in Debian. Not only are some core functions written in Perl, but there are over 700 packages in unstable that have perl in their name (Mar 2004).
  83. ^ "Perl Books - Book: Data Munging with Perl". Perl.org. Archived from the original on September 7, 2011. Retrieved December 30, 2010.
  84. ^ Perl 5 통역기에 대한 설명은 Programming Perl, 3차 Edd, 18장에서 찾을 수 있다. 실행 단계 및 컴파일 단계를 실행 시간컴파일 시간과 신중하게 구분하는 467페이지를 특히 참조하십시오. 펄 "시간"과 "위상"은 종종 혼동된다.
  85. ^ Schwartz, Randal. "On Parsing Perl". Archived from the original on September 27, 2007. Retrieved January 3, 2007.
  86. ^ "The Perl Journal #19/9.26" (PDF). O'Reilly Media. Retrieved February 4, 2011.
  87. ^ Kennedy, Adam (2006). "PPI—Parse, Analyze and Manipulate Perl (without perl)". CPAN. Archived from the original on September 3, 2013. Retrieved September 16, 2013.
  88. ^ "Rice's Theorem". The Perl Review. 4 (3): 23–29. Summer 2008. 및 , 온라인 이용 가능
  89. ^ Hietaniemi, Jarkko (1998). "Perl Ports (Binary Distributions)". CPAN.org. Archived from the original on April 18, 2006. Retrieved April 16, 2006.
  90. ^ "The MacPerl Pages". Prime Time Freeware. 1997. Archived from the original on January 18, 2006. Retrieved January 18, 2006.
  91. ^ "Perl Ports (Binary Distributions)". CPAN. Archived from the original on April 18, 2006. Retrieved January 27, 2011.
  92. ^ "ActivePerl is Perl for Windows, Mac, Linux, AIX, HP-UX & Solaris". ActiveState Software. Archived from the original on March 31, 2016. Retrieved January 9, 2011.
  93. ^ "Using PPM". ActiveState Software. Archived from the original on August 27, 2010. Retrieved January 9, 2011.
  94. ^ "Goodbye PPM, Hello State Tool". activestate.com. July 23, 2019. Archived from the original on July 28, 2020. Retrieved April 16, 2020.
  95. ^ readme.txt
  96. ^ Descartes, Alligator; Bunce, Tim (2000). Programming the Perl DBI : [database programming with Perl] (1 ed.). Beijing [u.a.]: O'Reilly. ISBN 978-1-56592-699-8.
  97. ^ "Perl Programming - Principles of Programming Languages". sites.google.com. Retrieved May 18, 2021.
  98. ^ Bunce, Tim; Descartes, Alligator (February 4, 2000). Programming the Perl DBI: Database programming with Perl. "O'Reilly Media, Inc.". ISBN 978-1-4493-1536-8.
  99. ^ Bekman, Stas. "Efficient Work with Databases under mod_perl". Archived from the original on August 22, 2007. Retrieved September 1, 2007.
  100. ^ Pachev, Sasha (April 10, 2007). Understanding MySQL Internals: Discovering and Improving a Great Database. "O'Reilly Media, Inc.". ISBN 978-0-596-55280-0.
  101. ^ "Class::DBI - Simple Database Abstraction - metacpan.org". metacpan.org. Archived from the original on August 6, 2020. Retrieved April 8, 2020.
  102. ^ "Rose::DB::Object - Extensible, high performance object-relational mapper (ORM). - metacpan.org". metacpan.org. Archived from the original on August 6, 2020. Retrieved April 8, 2020.
  103. ^ "T sql querying developer reference". pdfpremiumfree.com. Retrieved May 18, 2021.
  104. ^ "Alioth: The Computer Language Benchmarks Game: Project Info". Alioth. Archived from the original on March 25, 2013. Retrieved January 13, 2011.
  105. ^ "Which programs are fastest?". Computer Language Benchmarks Game. Alioth. Archived from the original on May 17, 2013. Retrieved January 13, 2011.
  106. ^ Leroy, Jean-Louis (December 1, 2005). "A Timely Start". O'Reilly. Archived from the original on June 13, 2006. Retrieved May 22, 2006.
  107. ^ Beattie, Malcolm & Enache Adrian (2003). "B::Bytecode Perl compiler's bytecode backend". CPAN. Archived from the original on March 30, 2021. Retrieved September 16, 2013.
  108. ^ Schwartz, Randal; foy, brian; Phoenix, Tom (June 23, 2011). Learning Perl. "O'Reilly Media, Inc.". ISBN 978-1-4493-0358-7.
  109. ^ Stein, Lincoln; MacEachern, Doug (1999). Writing Apache Modules with Perl and C: The Apache API and Mod_perl. "O'Reilly Media, Inc.". ISBN 978-1-56592-567-0.
  110. ^ Bekman, Stas; Cholet, Eric (2003). Practical Mod_perl. "O'Reilly Media, Inc.". ISBN 978-0-596-00227-5.
  111. ^ Ingerson, Brian. "Inline - metacpan.org". CPAN. Archived from the original on June 13, 2013. Retrieved January 26, 2011.
  112. ^ "Perl 5.12.0 released - Update". Heise Media UK. April 13, 2010. Archived from the original on April 19, 2010. Retrieved January 8, 2011.
  113. ^ "perl 5.16.1 released!". August 9, 2012. Archived from the original on December 2, 2012. Retrieved August 26, 2012.
  114. ^ "The unstoppable Perl release train?". LWN.net. February 29, 2012. Archived from the original on August 22, 2016. Retrieved March 28, 2012.
  115. ^ TIOBE Software Index (2020). "TIOBE Programming Community Index Perl". Archived from the original on February 25, 2018. Retrieved February 6, 2020.
  116. ^ "Perl 6". The Perl 6 Project. Archived from the original on February 21, 2011. Retrieved February 27, 2011.
  117. ^ Torkington, Nathan. "Transcription of Larry's talk". nntp.perl.org. Archived from the original on May 1, 2011. Retrieved January 25, 2011.
  118. ^ "Perl6 - The future of Perl". www.java-samples.com. Retrieved May 18, 2021.
  119. ^ "Official Perl 6 Documentation". The Perl 6 Project. Archived from the original on August 31, 2009. Retrieved January 25, 2011.
  120. ^ Kuhn, Bradley (January 2001). "Considerations on Porting Perl to the Java Virtual Machine". University of Cincinnati. Archived from the original on March 21, 2008. Retrieved June 28, 2008. Cite 저널은 필요로 한다. journal= (도움말)
  121. ^ Chromatic (2015). Modern Perl. Pragmatic Bookshelf. ISBN 978-1-68050-088-2.
  122. ^ "Feature comparison of Perl 6 compilers". Archived from the original on August 11, 2017. Retrieved March 28, 2012.
  123. ^ Worthington, Jonathan (July 15, 2013). "Rakudo JVM News: More tests, plus Thread and Promise prototypes". 6guts. Archived from the original on October 5, 2013. Retrieved July 24, 2013.
  124. ^ Worthington, Jonathan (May 31, 2013). "MoarVM: A virtual machine for NQP and Rakudo". 6guts. Archived from the original on July 9, 2013. Retrieved July 24, 2013.
  125. ^ "rename-lwn". Archived from the original on October 17, 2019. Retrieved November 10, 2019.
  126. ^ "rakudo/rakudo - GitHub". GitHub.com. Archived from the original on July 29, 2017. Retrieved September 21, 2013.
  127. ^ "Announcing Perl 7". perl.com. June 24, 2020. Archived from the original on June 24, 2020. Retrieved June 24, 2020.
  128. ^ "Perl 7 announced at Perl Conference in the Cloud". perlfoundation.org. June 24, 2020. Archived from the original on June 26, 2020. Retrieved June 24, 2020.
  129. ^ Wall, Larry (May 22, 2014). "Perl Culture (AKA the first State of the Onion)". Archived from the original on May 22, 2014. Retrieved May 22, 2014.
  130. ^ Larry Wall. "2nd State of the Onion". Archived from the original on July 17, 2012. Retrieved October 12, 2012. ('교회'를 찾아라)
  131. ^ Randal L. Schwartz (May 2, 1999). "Who is Just another Perl hacker?". Newsgroup: comp.lang.perl.misc. Usenet: m1hfpvh2jq.fsf@halfdome.holdit.com. Archived from the original on July 8, 2012. Retrieved December 5, 2014.
  132. ^ Schwartz, Randal (March 31, 2005). "Canonical JAPH". PerlMonks. Archived from the original on July 22, 2011. Retrieved May 16, 2011.
  133. ^ Greg Bacon (May 28, 1999). "Re: Incrementing a value in a slice". Newsgroup: comp.lang.perl.misc. Usenet: 7imnti$mjh$1@info2.uah.edu. Archived from the original on July 7, 2011. Retrieved July 12, 2011.
  134. ^ Back, Adam. "RSA in 5 lines of perl". Archived from the original on January 19, 2011. Retrieved January 10, 2011.
  135. ^ "Code Golf: What is Code Golf?". 29degrees. 2007. Archived from the original on January 13, 2012. Retrieved November 26, 2018.
  136. ^ Gallo, Felix (2003). "The Zeroth Obfuscated Perl Contest" (PDF). In Jon Orwant (ed.). Games, diversions, and Perl culture: best of the Perl journal. O'Reilly Media. Archived from the original (PDF) on November 22, 2009. Retrieved January 12, 2011.
  137. ^ "Perl Poetry". PerlMonks. Archived from the original on September 27, 2007. Retrieved January 27, 2011.
  138. ^ Conway, Damian. "Lingua::Romana::Perligata -- Perl for the XXI-imum Century". Archived from the original on September 30, 2007. Retrieved June 15, 2006.
  139. ^ Brocard, Leon (May 22, 2014). "use Perl; Journal of acme". GrnLight.net. Archived from the original on May 22, 2014.
  140. ^ "Developer Update". Dr. Dobb's Developer Update. Miller-Freeman. 2. 1995.
  141. ^ 위로 이동: Schwartz, Randal L. (1993). Learning Perl. O'Reilly & Associates. Bibcode:1993lepe.book.....S.
  142. ^ "perlintro". Perl 5 version 18.0 documentation. Perl 5 Porters and perldoc.perl.org. Archived from the original on January 9, 2011. Retrieved June 30, 2013.
  143. ^ "perlstyle". Perl 5 version 18.0 documentation. Perl 5 Porters and perldoc.perl.org. Archived from the original on June 26, 2013. Retrieved June 30, 2013.
  144. ^ 위로 이동: "Perl 6 FAQ". Perl 6 Project. Archived from the original on July 1, 2013. Retrieved June 30, 2013.
  145. ^ 위로 이동: chromatic (December 31, 2012). "The Implementation of Perl 5 versus Perl 6". Archived from the original on July 29, 2013. Retrieved June 30, 2013.

추가 읽기

외부 링크