{{위키데이터 속성 추적}}
{{다른 뜻}}
{{프로그래밍 언어 정보
|이름 = 펄<br />Perl
|로고 = Perl language logo.svg
|로고크기 = 120px
|패러다임 = [[다중 패러다임 프로그래밍 언어|다중 패러다임]]: [[함수형 프로그래밍|함수형]], [[명령형 프로그래밍|명령형]], [[객체 지향 프로그래밍|객체 지향]]([[클래스 기반 프로그래밍|클래스 기반]]), [[반영 (컴퓨터 과학)|반영]]
|설계자 = 래리 월
| released               = {{시작 날짜와 나이|1987|12|18}}<ref name="perltimeline"/>
| latest_release_version = {{Unbulleted list

|5.40.0<ref>{{웹 인용|url = https://www.nntp.perl.org/group/perl.perl5.porters/2024/06/msg268252.html |title = Perl v5.40.0 is now available | access-date = 2024-06-11 |publisher = www.nntp.perl.org }}</ref> / {{시작 날짜와 나이|mf=yes|2024|06|09|df=yes}}

|5.38.2<ref>{{웹 인용|url = https://www.nntp.perl.org/group/perl.perl5.porters/2023/11/msg267400.html |title = Perl 5.34.3, Perl 5.36.3 and Perl 5.38.2 are now available | access-date = 2023-12-05 |publisher = www.nntp.perl.org }}</ref> / {{시작 날짜와 나이|mf=yes|2023|11|29|df=yes}}

}}

| latest preview version=5.41.3<ref>{{웹 인용|url=https://www.nntp.perl.org/group/perl.perl5.porters/2024/08/msg268756.html |title=Release announcement for perl v5.41.3 |access-date=2024-08-29 |publisher=www.nntp.perl.org}}</ref> / {{시작 날짜와 나이|2024|08|29|df=yes}}

| latest preview date=<!-- ;<br/> alpha-02 of {{nowrap|Perl 7}}<ref>{{웹 인용|title=Releases · atoomic/perl|url=https://github.com/atoomic/perl/releases|access-date=2021-02-05|website=GitHub|language=en|archive-date=September 7, 2020|archive-url=https://web.archive.org/web/20200907173355/https://github.com/atoomic/perl/releases|url-status=live}}</ref><ref>{{웹 인용|title=Announcing Perl 7 - nntp.perl.org|url=https://www.nntp.perl.org/group/perl.perl5.porters/2020/06/msg257565.html|last1=X|first1=Sawyer|date=June 24, 2020|quote=We intend to release 7.0.0 within a year. However, I am setting the goal of releasing it before the end of this year [2020].|access-date=2021-02-05|website=www.nntp.perl.org|archive-date=November 25, 2020|archive-url=https://web.archive.org/web/20201125230437/https://www.nntp.perl.org/group/perl.perl5.porters/2020/06/msg257565.html|url-status=live}}</ref> / {{시작 날짜와 나이|2020|09|24|mf=yes}} -->

|형 체계 = 동적 타이핑
|영향을 받은 언어 = [[AWK]], [[스몰토크 80]], [[리스프]], [[C (프로그래밍 언어)|C]], [[C++]], [[Sed (유틸리티)|sed]], [[유닉스 셸]], [[파스칼 (프로그래밍 언어)|파스칼]]
|영향을 준 언어 = [[파이썬]], [[PHP]], [[루비 (프로그래밍 언어)|루비]], [[ECMAScript]]/[[자바스크립트]], [[LPC (프로그래밍 언어)|LPC]], [[윈도우 파워셸]], [[팰컨 (프로그래밍 언어)|팰컨]], [[펄 6]], 코어(Qore), [[줄리아 (프로그래밍 언어)|줄리아]]<!--2012년-->
|운영 체제 = [[크로스 플랫폼]]
|라이선스 = [[아티스틱 라이선스]] 1.0<ref name="artistic-1.0">[http://dev.perl.org/licenses/artistic.html The "Artistic License" - dev.perl.org]</ref><ref name="artistic-1.0-git">[http://perl5.git.perl.org/perl.git/blob/HEAD:/Artistic Artistic] - file on the Perl 5 git repository</ref>, [[GNU GPL]]<ref name="licensing">{{웹 인용 |url = http://dev.perl.org/licenses |title = Perl Licensing |accessdate = 2011-01-08 |publisher = dev.perl.org }}</ref>
|웹사이트 = {{url|https://www.perl.org/|perl.org}}
|파일 확장자 = .plx, .pl, .pm, .xs, .t, .pod, .cgi
}}

'''펄'''({{llang|en|Perl}})은 [[래리 월]]이 만든 [[인터프리터]] 방식의 [[프로그래밍 언어]] 혹은 그 인터프리터 소프트웨어를 가리킨다. 펄은 [[고급 프로그래밍 언어|고급 언어]], [[범용 프로그래밍 언어|범용 언어]], [[인터프리터|인터프리터 언어]], [[동적 프로그래밍 언어|동적 언어]] 범주에 속한다. 펄은 일반적으로 펄 5로 부르지만 2000년부터 2019년까지 자매 언어 펄 6으로 불리다가 2019년 10월 들어 펄 6라는 이름은 [[라쿠 (프로그래밍 언어)|라쿠]]라는 이름으로 공식적으로 변경되었다.<ref>{{웹 인용|url = https://www.perl.org/about.html |title = About Perl |publisher = perl.org |quote = "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". |accessdate = 2013-04-20 }}</ref><ref>{{웹 인용|url = https://github.com/perl6/problem-solving/pull/89/files/2d7b3f5a85ae9c8f913ba16994836ed59cf6de50 |title = Path to raku by lizmat |publisher = github.com |quote = This document describes the steps to be taken to effectuate a rename of `Perl 6` to `Raku`, as described in issue #81. | accessdate = 2019-10-16 }}</ref>

래리 월이 1987년 펄을 처음 만든 후, 펄은 많은 변화를 겪었다. 펄 6은 2000년부터 펄을 다시 설계하면서 개발되기 시작했고, 펄 5와는 독립적으로 개발되었고 서로 영향을 미쳤다.

펄 언어는 실용성을 모토로 하고 있어 [[C (프로그래밍 언어)|C]]나 [[Sed (유틸리티)|sed]], [[AWK]], [[셸 스크립트]] ([[본 셸|sh]]) 등 다른 프로그래밍 언어에서 뛰어난 기능을 많이 도입하여 사용하고 있다.<ref name="perltimeline">{{웹 인용 | url=http://history.perl.org/PerlTimeline.html | 제목=The Timeline of Perl and its Culture (v3.0_0505) | author=Ashton, Elaine | year=1999}}</ref> 동시대의 [[유닉스 명령어 목록|유닉스 명령 도구]]들이 지닌 불특정한 데이터 길이의 제약 없이 강력한 문자열 처리 기능을 제공하며<ref name="programmingperl">{{서적 인용 | 제목=Programming Perl, Third Edition | author=[[래리 월]], Tom Christiansen and [[Jon Orwant]] | publisher=[[오라일리 미디어]] |date=July 2000 | isbn=0-596-00027-8}}</ref> 이를 통해 [[텍스트 파일]]의 조작을 용이하게 만들어 준다. 펄 5는 부분적인 이유로는 타의 추종을 불허하는<ref>{{웹 인용|url=http://www.catb.org/esr/writings/taoup/html/ch14s04.html#perl|제목=Language Evaluations|quote=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.}}</ref><ref>{{웹 인용|url=http://www.cio.com/article/2437271/developer/you-used-perl-to-write-what--.html|제목=You Used Perl to Write WHAT?!|quote=perl has always been the go-to language for any task that involves pattern-matching input|확인날짜=2015-07-10|archive-date=2015-02-04|archive-url=https://web.archive.org/web/20150204175543/http://www.cio.com/article/2437271/developer/you-used-perl-to-write-what--.html|url-status=dead}}</ref><ref>{{웹 인용|url=http://archive.oreilly.com/pub/a/oreilly/perl/news/importance_0498.html|제목=The Importance of Perl|quote=Perl's unparalleled ability to process text...|확인날짜=2015-07-10|보존url=https://web.archive.org/web/20150202010003/http://archive.oreilly.com/pub/a/oreilly/perl/news/importance_0498.html#|보존날짜=2015-02-02|url-status=dead}}</ref> [[정규 표현식]], [[문자열]] 구문 분석 기능 덕분에 1990년대 말 들어 인기를 끌기 시작했다.<ref name='roderick02'>{{서적 인용 | last1 = Smith | first1 = Roderick W. | 제목 = Advanced Linux Networking | publisher = Addison-Wesley Professional | date = June 21, 2002  | page = 594 | isbn = 978-0-201-77423-8}}</ref>

CGI뿐 아니라 펄 5는 [[컴퓨터 그래픽스|그래픽스 프로그래밍]], [[시스템 관리]], [[네트워크 프로그래밍]], 금융, [[생물정보학]] 등에도 사용된다. 언어의 유연성과 강력함으로 인해 "스크립트 언어들 중의 스위스 군용 사슬톱"(the Swiss Army chainsaw of scripting languages)이라는 별명을 얻었다.<ref>{{웹 인용|url=http://www.perl.com/pub/a/2000/10/begperl1.html |제목=Beginner's Introduction to Perl |accessdate=2008-07-27 |last=Sheppard |first=Doug |date=2000-10-16 |publisher=[[오라일리 미디어]] }}</ref> 인터프리터 펄은 자유 소프트웨어이며, [[아티스틱 라이선스]] 또는 [[GPL]]으로 배포되고 있어 사용자는 둘 가운데 하나의 라이선스를 골라 쓸 수 있다. 유닉스를 비롯해 다양한 플랫폼에서 동작한다.

펄은 매우 [[표현 능력]]이 좋은 프로그래밍 언어이기 때문에 주어진 알고리즘의 소스 코드는 짧으면서도 매우 압축적으로 작성할 수 있다.<ref>{{웹 인용|title=How programs are measured {{!}} Computer Language Benchmarks Game|url=https://benchmarksgame-team.pages.debian.net/benchmarksgame/how-programs-are-measured.html#source-code|access-date=2020-10-05|website=benchmarksgame-team.pages.debian.net|archive-date=July 12, 2020|archive-url=https://web.archive.org/web/20200712000728/https://benchmarksgame-team.pages.debian.net/benchmarksgame/how-programs-are-measured.html#source-code|url-status=live}}</ref><ref>{{웹 인용|title=RSA in 3 lines of perl - Everything2.com|url=https://everything2.com/title/RSA+in+3+lines+of+perl|access-date=2020-10-05|website=everything2.com|archive-date=October 8, 2020|archive-url=https://web.archive.org/web/20201008120935/https://everything2.com/title/RSA+in+3+lines+of+perl|url-status=live}}</ref>

== 역사 ==
=== 초기 버전 ===
래리 월은 [[유니시스]]에서 프로그래머로 일하던 1987년 펄에 대한 작업을 시작하였으며<ref name='programmingperl'/>, 1987년 12월 18일 버전 1.0을 comp.sources.misc [[뉴스그룹]]에 공개하였다.<ref>{{뉴스그룹 인용
 | author = 래리 월
 | 제목 =  v13i001: Perl, a "replacement" for awk and sed, Part01/10
 | date = 1988-02-01
 | newsgroup = comp.sources.unix
 | message-id= 
 | url =  http://groups.google.com/group/comp.sources.unix/tree/browse_frm/month/1988-02?_done=%2Fgroup%2Fcomp.sources.unix%2Fbrowse_frm%2Fmonth%2F1988-02%3F&
 | accessdate = 2011-01-13 }}</ref> 그 뒤로 수년 동안 펄은 급격히 발전하였다. 1988년에는 개선된 [[정규 표현식]] 엔진을 포함한 펄 2가 공개되었다. 펄 3는 1989년에 출시되어 [[이진 데이터]] 스트림 지원을 추가하였다.

본래 펄의 유일한 문서는 길이가 매우 긴 하나의 [[man page]]였다. 1991년 《[[프로그래밍 펄]]》이라는 제목의 책이 출판되었고 펄의 [[데 팍토|사실 상의]] 참고 문헌이 되었는데, 이 책의 겉표지 때문에 "낙타 책"(Camel Book)으로 수많은 펄 프로그래머들에게 알려져 있다. 같은 시기에 펄 버전은 4로 이동되었으나 언어 상 큰 변화는 없었고 이 버전 들어 이 책에 의해 잘 문서화되었다.

=== 초기 펄 5 ===
펄 4는 1993년 펄 4.036에 이르기까지 일련의 유지 보수판으로 출시되었다. 당시 래리 월은 펄 4를 버리고 펄 5에 대한 작업을 시작했다. 펄 5의 초기 설계는 1995년 들어 계속되었다. ''perl5-porters'' [[메일링 리스트]]는 1994년 5월 개설되어 펄 5를 다른 플랫폼으로 이식하는 협업이 시작되었다. 이 목록은 펄 5의 개발, 유지 보수, 이식을 위한 주된 포럼으로 남아 있다.<ref>{{웹 인용 | url = http://www.nntp.perl.org/group/perl.perl5.porters/ | 제목 = perl.perl5.porters archive | accessdate = 2011-01-13 | publisher = perl.org}}</ref>

* 펄 5.000은 1994년 10월 17일 공개되었다.<ref>{{웹 인용 | url = http://perldoc.perl.org/perlhist.html | 제목 = perlhist - the Perl history records | accessdate = 2011-01-21 | work = Perl 5 version 12.2 documentation | publisher = perldoc.perl.org}}</ref> 인터프리터가 대부분 완전히 재작성되었고, [[객체 (컴퓨터 과학)|객체]], 레퍼런스, 렉시컬(my) 변수, 모듈 등이 추가되었다. 더 중요한 점은 인터프리터 수정 없이도 모듈이 언어의 확장을 위한 매커니즘을 제공한다는 것이다. 이로써 펄 프로그래머들이 새로운 언어 기능들을 추가하더라도 코어 인터프리터는 안정적으로 동작할 수 있게 되었다.
* 펄 5.001은 1995년 3월 13일 공개되었다.
* 펄 5.002는 1996년 2월 29일 새로운 프로토타입 기능과 더불어 공개되었다. 이를 통해 모듈 제작자들이 [[함수 (프로그래밍)|서브루틴]]들을 펄의 내장 명령처럼 동작하도록 만들 수 있게 되었다.
* 펄 5.003은 보안 문제를 수정하여 1996년 6월 25일 공개되었다.

펄 5 역사에서 가장 중요한 사건들 가운데 하나로는 모듈 지원을 들 수 있다. 1995년 10월 26일, 펄과 [[펄 모듈]]들을 저장, 관리하는 저장소 [[CPAN]]이 개설되었다. 2015년 6월 기준으로 31,896개의 배포판의 150,775개 이상의 모듈이 있고, 이 모듈들은 12,219명 이상의 작성자들이 작성하여 전 세계 253곳 이상의 지역에서 미러링되고 있다.<ref>{{웹 인용 |url = https://metacpan.org/|제목 = CPAN|accessdate = 2015-06-02|publisher = [[CPAN]]}}</ref>

* 펄 5.004는 1997년 5월 15일 공개되었다. 여러 기능들 가운데 유니버설 패키지 기능이 포함되었으며, 모든 [[클래스 (컴퓨터 과학)|클래스]]들이 자동으로 만들어져 펄에 필요한 버전별 모듈을 요청할 수 있다. 그 밖의 중요한 점으로는 [[CGI.pm]] 모듈이 포함된 것을 들 수 있는데<ref name='5004delta'>{{웹 인용 | url = http://perldoc.perl.org/perl5004delta.html | 제목 = perl5004delta - what's new for perl5.004 | accessdate = 2011-01-08 | work = Perl 5 version 12.2 documentation | publisher = perldoc.perl.org}}</ref>, 펄이 [[공용 게이트웨이 인터페이스|CGI 스크립트 언어]]로서 인기를 끄는데 기여하였다.<ref name='patwardhan02'>{{서적 인용 | last1 = Patwardhan | first1 = Nathan | last2 = Siever | first2 = Ellen | last3 = Spainhour | first3 = Stephen | 제목 = Perl in a Nutshell, Second Edition | publisher = 오라일리 미디어 | year = 2002 | isbn = 978-0-596-00241-1}}</ref>

또한 펄은 [[마이크로소프트 윈도우]]와 그 밖의 여러 운영 체제들에서의 실행을 지원한다.<ref name='5004delta'/>

* 펄 5.005가 1998년 7월 22일 공개되었다. [[정규 표현식|regex]] 엔진에 여러 기능이 강화되었고, <code>B::*</code> 모듈을 통한 백엔드로의 새로운 후킹, <code>qr//</code> 정규 표현식 인용 연산자, 기타 새롭게 선별된 수많은 코어 모듈들이 포함되었으며 [[BeOS]]를 포함한 더 많은 운영 체제들을 지원하게 되었다.<ref name='5005delta'>{{웹 인용 | url = http://perldoc.perl.org/perl5005delta.html | 제목 = perl5005delta - what's new for perl5.005 | accessdate = 2011-01-21 | work = Perl 5 version 12.2 documentation | publisher = perldoc.perl.org}}</ref>

=== 2000년~현재 ===
{| class="wikitable floatright"
|-
! 주요 버전
! 최신 업데이트
|-
| {{버전|o|5.5}}
| 2004-02-23<ref name="cpan-src">{{웹 인용 |url = http://www.cpan.org/src/ |title = Perl Source |publisher = www.cpan.org |date =  |accessdate = 2015-12-01 }}</ref>
|-
| {{버전|o|5.6}}
| 2003-11-15<ref name="cpan-src" />
|-
| {{버전|o|5.8}}
| 2008-12-14<ref name="cpan-src" />
|-
| {{버전|o|5.10}}
| 2009-08-23<ref name="cpan-src" />
|-
| {{버전|o|5.12}}
| 2012-11-10<ref name="cpan-src" />
|-
| {{버전|o|5.14}}
| 2013-03-10<ref name="cpan-src" />
|-
| {{버전|o|5.16}}
| 2013-03-11<ref name="cpan-src" />
|-
| {{버전|o|5.18}}
| 2014-10-02<ref name="cpan-src" />
|-
| {{버전|o|5.20}}
| 2015-09-12<ref name="cpan-src" />
|-
| {{버전|o|5.22}}
| 2016-04-29<ref name="cpan-src" />
|-
| {{버전|o|5.24}}
| 2018-04-14<ref name="cpan-src" />
|-
| {{버전|o|5.26}}
| 2018-11-29<ref name="cpan-src" />
|-
| {{Version|o|5.28}}
| 2020-06-01
|-
| {{Version|o|5.30}}
| 2020-06-01
|-
| {{Version|co|5.32}}
| 2021-01-23
|-
| {{Version|c|5.34}}
| 2021-05-20
|-
| {{Version|cp|5.35}}
| 2021-05-21
|-
| {{Version|p|5.36}}
| 2022-05-20
|-
| {{Version|p|7.0}}
| 2022?
|-
| colspan="99" | <small>{{버전 |lv |show=011101}}</small>
|}
* 펄 5.6이 2000년 3월 22일 공개되었다. 주된 변경 사항으로는 [[64비트]] 지원, [[유니코드]] 문자열 표현, 대용량 파일(2 GiB 이상의 파일) 지원, "our" 키워드 포함을 들 수 있다.<ref name='56delta'>{{웹 인용 | url = http://perldoc.perl.org/perl56delta.html | 제목 = perl56delta - what's new for perl v5.6.0 | accessdate = 2011-01-21 | work = Perl 5 version 12.2 documentation | publisher = perldoc.perl.org}}</ref><ref name='561delta'>{{웹 인용 | url = http://perldoc.perl.org/perl561delta.html | 제목 = perl56delta - what's new for perl v5.6.x | accessdate = 2011-01-21 | work = Perl 5 version 12.2 documentation | publisher = perldoc.perl.org}}</ref> 펄 5.6을 개발할 때 다른 오픈 소스 프로젝트와 비슷하게 [[소프트웨어 버전 작성|버전 작성]] 스킴으로 전환하기로 결정되었다. 5.005_63 이후로 다음 버전은 5.5.640이 되었으며 개발판의 경우 홀수를, 안정판의 경우 짝수를 붙이기로 계획하였다.
2000년에 래리 월은 커뮤니티로부터 새로운 버전의 펄에 대한 제안을 해 줄 것을 요청하였다. 이를 통해 361 RFC 문서들이 생성되었고 이 문서들은 펄 6의 개발을 이끌어가는데 사용되었다. 2001년에는<ref>{{웹 인용 | url = http://dev.perl.org/perl6/doc/design/apo/A01.html | 제목 = Apocalypse 1: The Ugly, the Bad, and the Good | accessdate = 2011-01-08 | last = Wall | first = Larry | archive-date = 2010-11-23 | archive-url = https://web.archive.org/web/20101123182201/http://dev.perl.org/perl6/doc/design/apo/A01.html | url-status =  }}</ref> 변경 요청 사항들을 요약하고 다음 세대의 펄의 설계를 나타내는 일련의 문서들인 [[펄 6]]의 계시록을 위한 작업이 시작되었다. 이 시점에 펄 6는 언어의 설명으로만 존재하였다.
* 펄 5.8이 2002년 7월 18일 공개되었고, 그 뒤로 한 해에 거의 한 차례씩 업데이트가 진행되었다. 펄 5.8은 유니코드 지원을 개선하였고 새로운 입출력과 새로운 스레드를 구현하였으며 수치 정확도를 개선하였고 새로운 모듈을 몇 개 더 추가하였다.<ref name='perl58delta'>{{웹 인용 | url = http://perldoc.perl.org/perl58delta.html | 제목 = perl58delta - what is new for perl v5.8.0 | accessdate = 2011-01-21 | work = Perl 5 version 12.2 documentation | publisher = perldoc.perl.org}}</ref> 2013년 기준으로 이 버전은 가장 대중적인 펄 버전으로 남아 있으며 레드햇 5, 수세 10, 솔라리스 10, HP-UX 13.33, AIX 5에 사용되고 있다.
* 펄 5.10.0이 2007년 12월 18일 공개되었으며 이 판은 펄 1.0 공개 20 주년을 기념한다. 펄 5.10.0에는 [[펄 6]]에 가까운 새로운 기능들이 포함되었는데, 여기에는 [[switch 문]](given / when), 정규 표현식 업데이트, 스마트 매치 연산자 "~~"를 포함한다.<ref name='5100delta'>{{웹 인용 | url = http://perldoc.perl.org/perl5100delta.html | 제목 = perl5100delta - what is new for perl 5.10.0 | accessdate = 2011-01-08 | work = Perl 5 version 12.2 documentation | publisher = perldoc.perl.org}}</ref><ref name='perlsyn-smart'>{{웹 인용 | url = http://perldoc.perl.org/perlsyn.html#Smart-matching-in-detail | 제목 = perlsyn - Perl syntax | accessdate = 2011-01-21 | work = Perl 5 version 12.2 documentation | publisher = perldoc.perl.org}}</ref> 거의 동시에 개발은 [[라쿠도 펄]]로 알려진 또다른 펄 6의 구현에 개발을 착수했다. ([[패럿 가상 머신]]과 나란히) 2009년 11월 라쿠도 펄은 달마다 정기적인 업데이트를 거쳐 현재는 [[펄 6]]의 가장 완전한 구현체로 되어 있다.
* 펄 5.12.0이 2010년 4월 12일 공개되었다. 새로운 <code>package NAME VERSION</code> 문법, 야다 야다 연산자(구현되지 않은 코드임을 표시하기 위한 기능), 암묵적 제한(implicit stricture), 완전한 [[2038년 문제]] 대응, 정규 표현식 변환 오버로딩, [[DTrace]] 지원, [[유니코드]] 5.2 지원을 포함한다.<ref name='5120delta'>{{웹 인용 | url = http://perldoc.perl.org/perl5120delta.html | 제목 = perl5120delta - what is new for perl v5.12.0 | accessdate = 2011-01-08 | work = Perl 5 version 12.2 documentation | publisher = perldoc.perl.org}}</ref>
* 펄 5.12.3이 2011년 1월 21일 공개되었다. 업데이트된 모듈과 일부 문서 변경 사항을 포함하고 있다.<ref name='5123delta'>{{웹 인용 | url = http://perldoc.perl.org/perl5123delta.html | 제목 = perldelta - what is new for perl v5.12.3 | accessdate = 2011-01-08 | work = Perl 5 version 12.2 documentation | publisher = perldoc.perl.org}}</ref>
* 펄 5.12.4가 2011년 6월 20일에 공개되었다. 해당 브랜치의 최신 버전은 5.15.5는 2012년 11월 10일에 공개되었다.
* 펄 5.14가 2011년 5월 14일 공개되었다. [[JSON]] 지원이 5.14.2에 기본 내장되었다. 해당 브랜치의 최신 버전은 5.14.4의 경우 2013년 10월 10일에 공개되었다.
* 펄 5.16이 2012년 5월 20일 공개되었다. 눈에 띄는 새로운 기능들로는 가상으로 구현하려는 펄의 버전을 지정할 수 있는 기능을 들 수 있으며 이로써 사용자가 펄 버전을 업그레이드하더라도 일반적으로 비호환되는 오래된 스크립트를 실행할 수 있게 되었다.<ref name='5160delta_version'>{{웹 인용 | url = https://metacpan.org/module/RJBS/perl-5.16.0/pod/perldelta.pod | 제목 = perldelta - what is new for perl v5.16.0 | accessdate = 2012-05-21 | work = Perl 5 version 16.0 documentation | publisher = metacpan.org | archive-date = 2020-07-28 | archive-url = https://web.archive.org/web/20200728080612/https://metacpan.org/pod/release/RJBS/perl-5.16.0/pod/perldelta.pod }}</ref> 펄 5.16은 [[유니코드]] 6.1 업데이트도 포함하고 있다.<ref name="5160delta_version" />
* 펄 5.18이 2013년 5월 18일 공개되었다. 눈에 띄는 새로운 기능들로는 새로운 dtrace 후킹, 렉시컬 (lexical) 함수, 더 많은 CORE:: 함수, 보안적인 이유로 인한 해시의 점검(overhaul), 유니코드 6.2 지원이 있다.<ref name='5180delta_version'>{{웹 인용 | url = https://metacpan.org/pod/release/RJBS/perl-5.18.1/pod/perl5180delta.pod| 제목 = perl5180delta - what is new for perl v5.18.0 - Perl programming language | accessdate = 2013-10-27 | work = Perl 5 version 18.0 documentation | publisher = metacpan.org}}</ref>
* 펄 5.20이 2014년 5월 27일에 공개되었다. 눈에 띄는 새로운 기능들로는 서브루틴 서명, 해시 슬라이스/새로운 슬라이스 문법, 후위 역참조 (실험적인 기능), 유니코드 6.3, 일관된 난수 발생기를 사용하는 rand()가 있다.<ref name='5200delta_version'>{{웹 인용 | url = https://metacpan.org/source/RJBS/perl-5.20.0/pod/perldelta.pod| 제목 = perl5200delta - what is new for perl v5.20.0 - Perl programming language | accessdate = 2014-05-27 | work = Perl 5 version 20.0 documentation | publisher = metacpan.org}}</ref>

일부 관찰자들은 펄 5.10이 현대 펄 운동의 시작점으로 평가하고 있다.<ref>[http://www.modernperlbooks.com/mt/2009/07/milestones-in-the-perl-renaissance.html Milestones in the Perl Renaissance - Modern Perl Programming]. Modernperlbooks.com. Retrieved on 2013-07-17.</ref> 특히 CPAN 이용을 장려하는 개발 스타일은 최근에 나온 언어의 발전 사항들을 이용하여 높은 품질의 코드를 작성할 수 있게 한다.<ref>[http://modernperlbooks.com/books/modern_perl/ Preface (Modern Perl 2011-2012)]. Modernperlbooks.com. Retrieved on 2013-07-17.</ref>

2012년 말과 2013년에 펄 5의 대안을 구현하는 여러 프로젝트가 시작되었다. 라쿠도 펄 팀의 [[펄 6|Perl6]]의 Perl5,<ref>{{웹 인용 |url=http://www.yapcna.org/yn2013/talk/4725 |제목=YAPC::NA 2013 - June 3-5, Austin, Texas |publisher=Yapcna.org |date=2013-06-04 |accessdate=2014-04-11 |보존url=https://web.archive.org/web/20130622201417/http://www.yapcna.org/yn2013/talk/4725 |보존날짜=2013-06-22 |url-status=dead }}</ref> 스테반 리틀과 동료들이 시작한 ''moe'',<ref>{{웹 인용|last=Little |first=Stevan |url=http://blogs.perl.org/users/stevan_little/2013/02/what-is-moe-a-clarification.html |제목=What is Moe (a clarification) &#124; Stevan Little |publisher=Blogs.perl.org |date=2013-02-08 |accessdate=2014-04-11}}</ref> 레이니 어반의 주도 하에 펄11 팀이 시작한 ''p2''<ref>{{웹 인용|url=http://perl11.org/p2/ |제목=p2 on potion |publisher=Perl11.org |date=2004-02-07 |accessdate=2014-04-11}}</ref>, goccy의 ''gperl'',<ref>{{웹 인용|url=https://github.com/goccy/gperl/ |제목=goccy/gperl 路 GitHub |publisher=Github.com |date= |accessdate=2014-04-11}}</ref> 펄11 프로젝트와 함께 윌 브래스웰이 주도하는 킥스타터 프로젝트인 ''rperl'' 등이 있다.<ref>{{웹 인용|url=http://rperl.org/faq.html |제목=rperl |publisher=RPerl.org |date= |accessdate=2014-08-11}}</ref>

=== PONIE ===
'''PONIE'''는 Perl On New Internal Engine의 준말이다. PONIE 프로젝트는 2003년부터 2006년까지 존재했으며, 펄 5와 [[펄 6]] 간의 연결 다리 역할을 하기로 되어 있었다. 펄 5 인터프리터를 다시 작성함으로써 펄 6 가상 머신인 [[패럿 가상 머신|패럿]]에서 실행할 수 있게 하려는 노력이었다. 목적은 전 세계 수천 개의 회사에 쓰이는 수백만 줄의 펄 5 코드의 미래를 보장하기 위해서였다.<ref>{{인용 | title = OSCON 4.4: Inside Ponie, the Bridge from Perl 5 to Perl 6 | date = August 8, 2005 <!-- 8:52PM  --> | author =  Geoff Broadwell | url = http://www.oreillynet.com/onlamp/blog/2005/08/oscon_44_inside_ponie_the_brid.html | publisher = O'Reilly ONLamp Blog }}</ref>

PONIE 프로젝트는 2006년에 끝났으며, 더 이상 개발되고 있지 않고 있다. PONIE의 일부로서 펄 5 인터프리터에 적용된 개선 사항들 중 일부분은 해당 프로젝트에 추가되었다.<ref>{{인용 | title = Ponie has been put out to pasture | author = [[Jesse Vincent]] | date = August 23, 2006<!-- 10:40 PM -->| url = http://news.perlfoundation.org/2006/08/ponie_has_been_put_out_to_past.html | publisher = The Perl Foundation }}</ref>

=== 명칭 ===
펄(Perl)의 원래 이름은 "Pearl"이다. 래리 월은 긍정적인 의미를 가지는 짧은 이름을 선택하고 싶었고, 서너 글자로 이루어진 낱말을 사전에서 모두 찾아 보았지만 눈에 탁 띄는 것이 없었다고 주장하였다. 그는 아내 글로리아의 이름을 따오는 것도 고려하였다. 래리 월은 공식 출시 이전에 기존에 [[PEARL]]이라는 이름의 프로그래밍 언어가 있다는 것을 발견하고 철자를 살짝 바꾸었다.<ref name="richardson1999">{{저널 인용 | url = http://www.linuxjournal.com/article/3394 | 제목 = Larry Wall, the Guru of Perl | accessdate = 2011-01-03 | last = Richardson | first = Marjorie | date = 1999-05-01 | work = [[리눅스 저널]]}}</ref>

이 언어를 가리킬 때 이름은 고유 명사로서 일반적으로 앞 글자가 대문자인 "Perl"로 표기한다. 인터프리터 프로그램 그 자체를 가리킬 때에는 모두 소문자인 ''perl''로 부르기도 하는데 이는 대부분의 유닉스 계열 운영 체제들이 대소문자를 구분하기 때문이다. 서적 《프로그래밍 펄》의 첫 판이 출시되기 전에 이 언어를 ''perl''로 부르는 것이 일반적이었다. 그러나 [[랜들 L. 슈왈츠]]는 이 책에서 언어의 이름을 대문자화하여 조판 시에 더 잘 눈에 띄게 하였다. 최종적으로 이러한 대소문자 구별은 정규화된 채로 문서화되었다.<ref name="capitalization">{{웹 인용 | url=http://perldoc.perl.org/perlfaq1.html#What's-the-difference-between-%22perl%22-and-%22Perl%22%3f | 제목=perlfaq1: What's the difference between "perl" and "Perl"? | work=perldoc.perl.org - Perl 5 version 12.2 documentation }}</ref>

이 언어의 이름은 "실용적인 데이터 취득 및 보고서 작성 언어"(Practical Extraction and Report Language)로 기술되기도 하는데 이는 이미 존재하는 단어에 맞추기 위해 만들어진 약어이다.<ref>{{서적 인용 | last1 = Schwartz | first1 = Randal | authorlink1 = Randal Schwartz | last2 = foy | first2 = brian | authorlink2 = brian d foy | last3 = Phoenix | first3 = Tom | 제목 = Learning Perl | publisher = 오라일리 미디어 | date = June 16, 2011  | page = 4 | isbn = 978-1449313142 | quote = 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.}}</ref> 래리 월 자신의 풍자적인 표현으로 "병적 절충주의 잡동사니 출력장치"(Pathologically Eclectic Rubbish Lister)와 같은 다른 표현들이 제안되기도 했다.<ref>{{웹 인용 | last = 월 | first = 래리 | authorlink = 래리 월 | 제목 = perl - The Perl language interpreter | work = Perl 5 version 12.2 documentation | url = http://perldoc.perl.org/perl.html#BUGS | accessdate = 2011-01-26 }}</ref> 실제로 래리 월은 이 이름이 다른 수많은 확장들에 영감을 주기 위해 고안하였다고 주장하였다.<ref>{{웹 인용 | last = Wall | first = Larry | authorlink = 래리 월 | 제목 = Re^7: PERL as shibboleth and the Perl community | url =http://www.perlmonks.org/index.pl?node_id=511722 | publisher=[[PerlMonks]] | accessdate = 2011-01-02 }}</ref>

=== 낙타 상징 ===
{{비자유 그림 연결|링크=:en:File:Perl-camel-small.png|설명=오라일리 미디어가 사용하는 낙타 상징}}
[[오라일리 미디어]]가 출판한 《프로그래밍 펄》은 책 겉표지에 [[낙타|단봉(單峰) 낙타]]의 사진을 특징으로 내세우고 있으며, 이를 흔히 낙타책(Camel Book)으로 부른다.<ref name='schwartz01'>{{서적 인용 | last1 = Schwartz | first1 = Randal L | authorlink1 = Randal L. Schwartz | last2 = Phoenix | first2 = Tom | last3 = Foy | first3 = Brian | authorlink3 = Brian D Foy | 제목 = Learning Perl, Third Edition | isbn = 978-0-596-00132-2}}</ref> 이 낙타 그림은 펄의 비공식적인 상징이자 [[해커 문화|해커]]의 상징으로 되고 있으며, 티셔츠와 다른 의상들에서 볼 수 있다.

오라일리는 이 그림을 [[상표]]로 소유하고 있으나 비상업적인 용도로 라이선스하고 있는데, 이에 대해 고지와 더불어 www.perl.com로의 링크만을 요구한다. 상용 라이선스는 그때그때의 상황에 따라 결정된다.<ref name='camel'>{{웹 인용 | url = http://onlamp.com/pub/a/oreilly/perl/usage/ | 제목 = The Perl Camel Usage and Trademark Information | accessdate = 2011-01-09 | publisher = [[오라일리 미디어]] | archive-date = 2011-04-30 | archive-url = https://web.archive.org/web/20110430031514/http://onlamp.com/pub/a/oreilly/perl/usage/ | url-status = dead }}</ref> 또, 오라일리는 비상용 사이트들을 위한 펄 프로그래밍 공화국(Programming Republic of Perl) 로고들을 제공하고 펄을 사용하는 모든 사이트에는 "Powered by Perl" 버튼들을 제공한다.<ref name='camel'/>
=== 양파 상징 ===
{{비자유 그림 연결|링크=:en:File:Onion 64x64.png|설명=펄 재단이 사용하는 양파 로고}}
[[펄 재단]]은 이를 대체하는 상징인 양파 그림을 소유하고 있으며 [[Perl Mongers]], [[PerlMonks]], Perl.org 등의 하위 단체들에 라이선스한다.<ref name='onion'>{{웹 인용 | url = http://www.perlfoundation.org/perl_trademark | 제목 = Perl Trademark | accessdate = 2011-01-09 | publisher = [[The Perl Foundation]] | 보존url = https://web.archive.org/web/20110503211915/http://www.perlfoundation.org/perl_trademark | 보존날짜 = 2011-05-03 | url-status = dead }}</ref> 이 상징은 [[진주 양파|펄 어니언]]의 [[비주얼 펀|시각적 유희]]이다.<ref name='gillmore98'>{{뉴스 인용 | first = Dan | last = Gillmore | 제목 = Republic Of Perl | date = 1998-10-25 | url = http://articles.chicagotribune.com/1998-10-25/news/9810250094_1_programmers-open-source-movement-programming-community | work = Chicago Tribune | accessdate = 2011-01-10 | archive-date = 2011-04-30 | archive-url = https://web.archive.org/web/20110430031425/http://articles.chicagotribune.com/1998-10-25/news/9810250094_1_programmers-open-source-movement-programming-community | url-status =  }}</ref>

=== 랩터 상징 ===
[[파일:Perl5Raptor.png|섬네일|대안 펄 5 로고]]
[[모졸리셔스]]의 개발자 Sebastian Riedel는 랩터(육식조)를 그려놓은 로고를 개발하였으며, CC-SA 라이선스 버전 4.0으로 배포되었다.<ref name="riedel11">{{웹 인용|first = Sebastian |last = Riedel |title = Perl 5 Raptor |date = 2012-01-18 |url = https://github.com/kraih/perl-raptor |work = Sebastian Riedel |accessdate = 2017-11-12 }}</ref> 이 로고는 펄 5를 상징으로 두고 있다.

== 개요 ==
래리 월에 따르면 펄은 두 개의 슬로건이 있다. 첫 번째 슬로건은 "[[어떤 일을 하는 데에는 하나 이상의 길이 있다]]"(There's more than one way to do it, TMTOWTDI)이며, 두 번째 슬로건은 "쉬운 일은 쉬워야 하고 어려운 일은 할 수 있어야 한다"(Easy things should be easy and hard things should be possible)이다.<ref name='programmingperl'/>

=== 특징 ===
펄의 전반적인 구조는 대체적으로 C에서 가져왔다. 펄은 [[변수 (컴퓨터 과학)|변수]], [[식 (프로그래밍)|식]], [[대입문]], [[괄호]]로 구분되는 [[블록 (프로그래밍)|블록]], [[제어 흐름|제어 구조]], [[함수|서브루틴]]을 갖추고 있는 [[절차적 프로그래밍|절차적]] 프로그래밍 언어이다.

펄은 셸 프로그래밍에서도 기능들을 가져왔다. 모든 변수는 [[시길]](<code>$</code>, <code>%</code>, <code>@</code> 등)로 표기하므로 변수를 [[문자열]] 내에 직접 사용할 수 있다. 그러나 셸과는 달리 펄은 온전히 변수에 접근하기 위해 시길을 사용하며, 시길을 사용하는 다른 대부분의 프로그래밍 언어들과 달리, 펄의 시길을 보면 식의 종류에 대해서만 알 수 있지, 변수의 종류가 무엇인지를 말해주지는 않는다. 이를테면 [[연관 배열|해시]]의 값의 목록에 접근하려면 [[배열]]을 위한 시길(<code>@</code>)을 사용하며 해시를 위한 시길(<code>%</code>)을 사용하지는 않는다. 또, 펄은 정렬 기능과 같이 셸 프로그래밍에서 자주 쓰이는 도구들을 제공하는, 운영 체제 기능에 직접 호출하는 내장 함수들을 많이 포함하고 있는데, 이러한 도구들은 셸의 경우 기본 내장이 아닌 외부 명령어로 구현되어 있다는 점에서 펄과 구별된다.

펄은 [[리스프]]로부터 [[리스트 (컴퓨팅)|리스트]] 개념을, [[AWK]]로부터 [[연관 배열|해시]](연관 배열) 개념을, [[sed (유틸리티)|sed]]로부터 [[정규 표현식]] 개념을 가져왔다. 이를 통해 수많은 구문 분석, 문자열 처리, 데이터 관리 작업을 단순하게 만들어준다.

모든 버전의 펄은 자동 [[자료형 체계|데이터 타이핑]] 및 자동 [[메모리 관리]] 기능을 수행한다. 인터프리터는 프로그램 안의 모든 데이터마다 지니고 있는 자료형과 필요한 [[기억 장치|기억 공간]]을 알고 있다. [[참조 횟수 계산 방식]]을 이용하여 필요한 만큼 기억 공간을 할당하고 해제한다. (즉, 수동적인 개입 없이는 [[원형 버퍼|원형 데이터 구조]]의 할당을 해제할 수 없다) 숫자에서 문자열로의 변환과 같은 유효한 [[형 변환]]은 [[런타임]] 도중에 자동으로 수행되며 잘못된 형 변환은 치명적인 오류로 간주한다.

=== 디자인 ===
펄의 디자인은 컴퓨터 산업의 세 개의 커다란 트렌드에 응하는 것으로 이해할 수 있다: 하드웨어 비용의 감소, 인건비 증가, [[컴파일러]] 기술의 개선. [[포트란]], C와 같은 초기의 수많은 컴퓨터 언어들은 값비싼 컴퓨터 하드웨어의 효율적인 이용을 목표로 하였다. 반면 펄은 컴퓨터 프로그래머들이 프로그램을 더 빠르고 쉽게 작성할 수 있도록 설계되었다.

펄에는 상당한 [[중앙 처리 장치|CPU]]와 메모리를 사용하여 프로그래머의 작업을 용이하게 하는 수많은 기능들을 제공한다. 여기에는 자동 메모리 관리, [[동적 타이핑]], 문자열, 리스트, 해시, 정규 표현식, 자기 검사, <code>eval()</code> 함수를 포함한다. 펄은 [[ZOI]](Zero One Infinity) 규칙과 비슷한 개념인 내장 제한의 부재(no built-in limits) 이론을 따른다.<ref name='schwartz01'/>

래리 월은 언어학자로서 훈련을 받았으며 펄의 설계는 [[언어학]]적인 원칙으로부터 많은 정보를 얻었다. 그 예로 [[허프만 부호화]](공통이 되는 구조의 길이는 짧아야 한다는 이론), 양호한 문미 중점(end-weighting)의 원리(중요한 정보는 처음에 와야 함), 수많은 [[언어 프리미티브]](language primitive) 요소들의 모임을 포함한다. 펄은 펄 인터프리터를 복잡하게 만든다고 할지라도, 간결하고 사람이 쓰기에 자연스러운 언어 구조체를 선호한다.

펄의 [[구문 (프로그래밍 언어)|구문]]은 "어려운 일들은 어렵게 보여야 한다"라는 개념을 반영한다.<ref name='wall97'>{{저널 인용 | url = http://www.linuxjournal.com/article/2070 | title = Wherefore Art, Thou? | accessdate = 2011-03-13 | last = Wall | first = Larry | date = 1997-03-01 | work = [[Linux Journal]] | 보존url = https://web.archive.org/web/20101209021107/http://www.linuxjournal.com/article/2070 | 보존날짜 = 2010-12-09 | url-status = dead }}</ref> 이를테면 스칼라, 배열, 해시는 각기 다른 시길을 지니고 있다. 배열의 인덱스들과 해시의 키들은 서로 다른 종류의 괄호를 사용한다. 문자열과 정규 표현식은 다르게 표준화된 구분 문자를 가지고 있다. 이러한 접근은 동일한 [[S-표현식]] 구조체와 기본 구문이 여러 목적으로 사용되는 [[리스프]] 등의 언어들과는 대조된다.

펄은 특정한 [[프로그래밍 패러다임]]([[절차적 프로그래밍|절차적]], [[객체 지향 프로그래밍|객체 지향]], [[함수형 프로그래밍|함수형]] 등)을 강요하지 않으며 심지어는 프로그래머가 이들 중 선택하도록 요구하지도 않는다.

=== 응용 프로그램 ===
{{참고|분류:펄 소프트웨어}}
펄은 수많은 표준 및 타사 모듈의 이용과 더불어 수많은 다양한 응용 프로그램들이 있다.

펄은 [[공용 게이트웨이 인터페이스|CGI]] 스크립트를 작성하는데 주로 사용된다: 펄로 작성된 대형 프로젝트로는 [[시패널]](cPanel), [[슬래시닷|슬래시]], [[버그질라]], [[리퀘스트 트래커|RT]], [[트위키]], [[무버블 타입]] 등이 있다. 펄을 광범위하게 사용하면서도 트래픽이 많은 웹사이트로는 [[Priceline.com]], [[크레이그리스트]]<ref>{{서적 인용 | last1 = Gilmore | first1 = W. J. | 제목 = Beginning PHP and MySQL: From Novice to Professional, Fourth Edition | publisher = Apress | page = 484 | isbn = 978-1-4302-3114-1}}</ref>, [[인터넷 영화 데이터베이스|IMDb]]<ref>{{웹 인용 | 제목 = IMDb Helpdesk: What software/hardware are you using to run the site? | publisher=Internet Movie Database|url = https://www.imdb.com/help/search?domain=helpdesk_faq&index=1&file=techinfo | accessdate = 2011-02-12 }}</ref>, [[라이브저널]], [[덕덕고]]<ref>DuckDuckGo handles a large amount of search queries at 4.5 million queries per day . https://duckduckgo.com/traffic.html</ref><ref>DuckDuckGo uses Perl https://news.ycombinator.com/item?id=1500487</ref>, [[슬래시닷]], [[티켓마스터]] 등이 있다. [[PHP]]나 [[파이썬]] 대신 [[웹 개발]]을 위한 [[LAMP]] 기술 스택 구성요소를 선택적으로 사용할 수 있다.

펄을 이용하여 [[그래픽 사용자 인터페이스]](GUI)의 개발이 가능하다. 이를테면 [[Tk (소프트웨어)|펄/Tk]]와 [[wxPerl]]이 펄 스크립트로 사용자 상호 작용을 가능케 하는데 흔히 사용된다. 이러한 상호 작용은 GUI를 업데이트하는 [[콜백]]을 이용하여 동기식이나 비동기식으로 처리가 가능하다.

=== 구현 ===
코어 인터프리터로서 펄은 C 언어로 작성되어 있으며 많은 수의 모듈은 펄과 C로 작성되어 있다. 인터프리터는 150,000 줄의 C 코드로 되어 있고 일반적인 머신 아키텍처를 대상으로 1 MB 정도의 실행 파일로 컴파일된다.

인터프리터는 객제 지향 구조이다. 펄 언어의 요소들인 스칼라, 배열, 해시, 코드 참조(coderef), [[파일 핸들]]은 모두 [[struct|C 구조체]]에 의해 인터프리터 안에서 표현된다. 이러한 구조체들의 동작은 많은 수의 [[매크로 (컴퓨터 과학)|매크로]], [[typedef]], 함수의 모임에 의해 정의된다. 이들은 펄 C [[API]]를 이룬다.

=== 이용 가능 ===
펄은 [[GNU GPL]]과 [[아티스틱 라이선스]]라는 [[다중 라이선스|이중 라이선스]] 하에 배포된다. 배포판들은 대부분의 [[운영 체제]]에서 이용이 가능하다. 특히 [[유닉스]]와 [[유닉스 계열]] 운영 체제에서 널리 쓰이지만 현대의 대부분의 플랫폼에 포팅되고 있다.
==== 윈도우 ====
[[마이크로소프트 윈도우]]의 사용자들은 Win32 버전의 펄 이진 배포판인 [[스트로베리 펄]]과 [[액티브펄]] 가운데 하나를 설치하여 사용하는 것이 일반적이다.
* [[액티브펄]]은 [[액티브스테이트]]의 클로즈드 소스 배포판으로서 코어 펄 릴리즈를 추적하는 정규판을 포함한다.<ref name='activestate'>{{웹 인용 | url = http://www.activestate.com/activeperl | 제목 = ActivePerl is Perl for Windows, Mac, Linux, AIX, HP-UX & Solaris | accessdate = 2011-01-09 | publisher = [[액티브스테이트|액티브스테이트 소프트웨어]] | 보존url = https://web.archive.org/web/20160331201814/http://www.activestate.com/activeperl | 보존날짜 = 2016-03-31 | url-status = dead }}</ref>
* [[스트로베리 펄]]은 윈도용 오픈 소스 배포판이다.
* [[MinGW]]를 포함한 [[시그윈]] 에뮬레이션 계층에서 펄을 실행할 수도 있다. 시그윈은 윈도우에서 유닉스 계열 환경을 제공하므로 펄과 CPAN을 시그윈 설치 프로그램의 미리 컴파일된 패키지로 사용 가능하다.

== 데이터베이스 인터페이스 ==
펄의 문자열 핸들링 기능은 [[SQL]] 쿼리를 생성하는데 사용될 수 있다. 배열, 해시, 자동 메모리 관리 기능을 통해 반환된 데이터를 수집하고 처리하기 매우 쉽다. 이를테면 Tim Bunce의 [[펄 DBI]] [[API]] 내에서 API에 대한 인수들은 SQL 쿼리의 텍스트로 지정할 수 있다. 그러므로 여러 언어로 구성된 프로그램을 동시에 이용할 수 있다. (예: [[HTML]], [[자바스크립트]], SQL을 이용하는 [[웹 페이지]]를 [[히어 도큐먼트]] 안에 생성할 수 있음) 프로그래밍적으로 사용자가 SQL 쿼리 각각을 만들 수 있는 펄의 [[문자열 보간|변수 보간]]의 이용, 그리고
각 SQL 쿼리로부터 결과 [[데이터셋]]을 프로그래밍적으로 보관하기 위한 구조로서의 펄 배열 또는 해시의 사양은 펄의 하위 프로그램에 의해 후처리할 목적으로 많은 양의 데이터를 관리하기 위한 높은 수준의 매커니즘을 허용한다.<ref>{{서적 인용 |last = Descartes |first = Alligator |제목 = Programming the Perl DBI : [database programming with Perl] |year = 2000 |publisher = O'Reilly |location = Beijing [u.a.] |isbn = 1-56592-699-4 |edition = 1 |author2 = Bunce, Tim }}</ref> 초기 버전의 펄에서 데이터베이스 인터페이스들은 [[클라이언트 사이드]] 데이터베이스 라이브러리로 인터프리터를 다시 연결함으로써 작성되었다. 이것은 매우 어려운 작업이었는데, 가장 중요하고 가장 널리 사용되는 데이터베이스들 중 일부에 한해서만 할 수 있었고, 결과물이 되는 <code>perl</code> 실행파일이 한 번에 하나의 데이터베이스 인터페이스만 사용할 수 있도록 제한되었기 때문이다.

펄 5에서 데이터베이스 인터페이스들은 [[펄 DBI]] 모듈을 통해 구현된다. DBI (데이터베이스 인터페이스) 모듈은 하나의 데이터베이스 독립 인터페이스를 펄 응용 프로그램들에 제공하는 반면, DBD (데이터베이스 드라이버) 모듈들은 일부 50개의 다른 데이터베이스의 세세한 부분을 관리한다. 대부분의 [[ANSI]] [[SQL]] 데이터베이스에 맞는 DBD 드라이버들이 존재한다.

DBI는 데이터베이스 핸들과 쿼리를 위한 캐시를 제공하며 [[mod perl]]과 같이 장기간 생존한 실행 환경들의 성능을 상당히 개선시켜 줄 수 있어,<ref>{{웹 인용 |last = Bekman |first = Stas |title = Efficient Work with Databases under mod_perl |url = http://perl.apache.org/docs/1.0/guide/performance.html#Efficient_Work_with_Databases_under_mod_perl |accessdate = 2007-09-01 }}</ref> [[슬래시닷 효과]]에서처럼, 볼륨이 큰 시스템들이 부하가 급증하는 현상을 예방할 수 있다.

현대의 펄 응용 프로그램들에서, 특히 [[카탈리스트 (소프트웨어)|카탈리스트]]와 같은 [[웹 프레임워크]]를 이용하여 작성된 프로그램의 경우, DBI 모듈은 종종 SQL 쿼리를 만들어서 응용 프로그램 제작자에게 투명하게 데이터를 관리하게 하는 [[DBIx::Class]], [[Class::DBI]] [[Rose::DB::Object]] 등의 [[객체 관계 매핑|객체 관계 매퍼]]를 통해 간접적으로 사용된다.

== 라쿠 (펄 6) ==
{{본문|라쿠 (프로그래밍 언어)}}
[[파일:Camelia.svg|섬네일|오른쪽|200px|카멜리아(''Camelia'')는 펄 6 프로젝트의 로고이다.<ref>{{웹 인용 |url = http://perl6.org/ |title = Perl 6 |accessdate = 2011-02-27 |publisher = The Perl 6 Project }}</ref>]]
2000년에 펄 콘퍼런스에서 존 오원트(Jon Orwant)는 새로운 주된 언어의 발의를 위한 케이스를 만들었다.<ref>
{{웹 인용 | url = http://www.nntp.perl.org/group/perl.perl6.meta/2000/10/msg424.html | 제목 = Transcription of Larry's talk | accessdate = 2011-01-25 | last = Torkington | first = Nathan | publisher = nntp.perl.org}}</ref> 이를 통해 펄 6이라는 이름의 언어 재설계에 착수하기로 결정되었다. 새로운 언어 기능들에 대한 제안들이 펄 커뮤니티로부터 제기되었는데 그 [[RFC]]의 수는 300개 이상이다.

펄 6는 하위 호환성을 고려하지는 않지만 호환성 모드는 존재한다. 공통 계통을 지니면서도 펄 6와 펄 5는 구별된 언어이다.<ref name='perl6dev'>{{웹 인용 | url = http://dev.perl.org/perl6/ | 제목 = Perl 6 - dev.perl.org | accessdate = 2011-01-25 | publisher = dev.perl.org | archive-date = 2006-02-07 | archive-url = https://web.archive.org/web/20060207094455/http://dev.perl.org/perl6/ | url-status =  }}</ref>

== 펄 7 ==
펄 7은 2020년 6월 24일 펄 5의 연장자로서 "클라우드 펄 콘퍼런스"(The Perl Conference in the Cloud)에서 발표되었다.<ref>{{웹 인용|url=https://www.perl.com/article/announcing-perl-7/ |title=Announcing Perl 7 |publisher=perl.com |date=2020-06-24 |accessdate=2020-06-24}}</ref><ref>{{웹 인용|url=https://news.perlfoundation.org/post/perl_7_announced_sawyerx_conference |title=Perl 7 announced at Perl Conference in the Cloud |publisher=perlfoundation.org |date=2020-06-24 |accessdate=2020-06-24}}</ref> 펄 5.32에 기반을 둔 펄 7은 펄 5와 [[하위 호환성|하위 호환]]되도록 설계되어 있다.

== 펄 커뮤니티 ==
=== IRC 상의 펄 ===
언어 및 일부 모듈 지원을 제공하는 수많은 [[인터넷 릴레이 챗|IRC]] 채널이 있다.

{| class="wikitable"
|-
! IRC 네트워크
! 채널
|-
| irc.freenode.net
| #perl-kr #perl #perl6 #cbstream #perlcafe #poe
|-
| irc.perl.org
| #moose #poe #catalyst #dbix-class #perl-help #distzilla #epo #corehackers #sdl #win32 #toolchain #padre #dancer
|-
| irc.slashnet.org
| #perlmonks
|-
| irc.oftc.net
| #perl
|-
| irc.efnet.net
| #perlhelp
|-
| irc.rizon.net
| #perl
|-
| irc.debian.org
| #debian-perl (데비안을 위한 펄 모듈 패키징)
|}

== CPAN ==
{{본문|CPAN}}
펄은 모듈을 이용하여 특정 기능을 쉽게 사용할 수 있다. 예를 들어, 다른 프로그램이나 네트워크와의 통신, 각종 파일 형식의 처리, 수치 계산 등을 위한 수많은 모듈이 존재한다. [http://www.cpan.org CPAN] 은 이러한 모듈을 체계적으로 관리하는 조직이며, 인터넷에서 서비스되고 있다. 펄이 동작하고 있는 컴퓨터가 인터넷에 접속되어 있으면, 반자동으로 CPAN과 접촉해 모듈을 가져와서 설치할 수 있다.

== 예제 코드 ==
이전 버전의 펄의 [[Hello World]] 프로그램은 다음과 같다:

<syntaxhighlight lang="perl">
    print "Hello World!\n";
</syntaxhighlight>

나중에 나온 버전에서는 다음과 같이 쓸 수 있다:

<syntaxhighlight lang="perl">
    use 5.010;
    say "Hello World!";
</syntaxhighlight>

더 복잡한 프로그램을 위해서 <code>use strict;</code>와 <code>use warnings;</code>를 쓰는 것이 좋다:

<syntaxhighlight lang="perl">
    use strict;
    use warnings;

    print "Hello World!\n";
</syntaxhighlight>

최대 주어진 임계값까지 초 단위로 카운트 다운을 하는 더 복잡한 펄 프로그램의 예는 다음과 같다:

<syntaxhighlight lang="perl">
	#!/usr/bin/perl
	use strict;
	use warnings;

	my ( $remaining, $total );

	$remaining = $total = shift(@ARGV);

	STDOUT->autoflush(1);

	while ( $remaining ) {
		printf ( "남음: %s/%s \r", $remaining--, $total );
		sleep 1;
	}

	print "\n";
</syntaxhighlight>

== 같이 보기 ==
* [[플레인 올드 도큐멘테이션]]
== 각주 ==
{{각주}}

== 추가 문헌 ==
* {{언어링크|en}} [http://shop.oreilly.com/product/0636920018452.do Learning Perl] 6th Edition (2011), O'Reilly. Beginner-level introduction to Perl.
* {{언어링크|en}} [http://ofps.oreilly.com/titles/9781118013847/index.html Beginning Perl] 1st Edition (2012), Wrox. A beginner's tutorial for those new to programming or just new to Perl.
* {{언어링크|en}} [http://onyxneon.com/books/modern_perl/ Modern Perl] {{웨이백|url=http://onyxneon.com/books/modern_perl/ |date=20111222045417 }} 2nd Edition (2012), Onyx Neon. Describes [[Modern Perl]] programming techniques.
* {{언어링크|en}} [http://shop.oreilly.com/product/9780596004927.do Programming Perl] 4th Edition (2012), O'Reilly. The definitive Perl reference.
* {{언어링크|en}} [http://www.pearsonhighered.com/educator/product/Effective-Perl-Programming-Ways-to-Write-Better-More-Idiomatic-Perl-2E/9780321496942.page Effective Perl Programming] 2nd Edition (2010), Addison-Wesley. Intermediate- to advanced-level guide to writing idiomatic Perl.
* ''[[Perl Cookbook]]'', {{ISBN|0-596-00313-7}}. Practical Perl programming examples.
* {{언어링크|en}} {{서적 인용|last=Dominus|first=Mark Jason|제목=Higher Order Perl|url=http://hop.perl.plover.com/book/|year=2005|publisher=Morgan Kaufmann|isbn=1-55860-701-3}} Functional programming techniques in Perl.

== 외부 링크 ==
{{위키공용분류}}
* {{공식 웹사이트}}
* [https://perldoc.perl.org/ 펄 문서]
* [https://metacpan.org/ MetaCPAN] - 새로운 CPAN 웹 인터페이스
* [https://www.cpan.org/ CPAN] - 펄 코드 및 모듈 저장소
* [https://www.perlfoundation.org/ 펄 재단]
* [https://www.perlmonks.org/ PerlMonks] - 펄 지식 및 코딩 팁을 공유하는 커뮤니티

{{펄}}
{{자유-오픈 소스 소프트웨어}}
{{주요 프로그래밍 언어}}
{{전거 통제}}

[[분류:펄| ]]
[[분류:미국의 발명품]]
[[분류:크로스 플랫폼 소프트웨어]]
[[분류:C로 작성된 자유 소프트웨어]]
[[분류:객체 지향 프로그래밍 언어]]
[[분류:절차적 프로그래밍 언어]]
[[분류:1987년 개발된 프로그래밍 언어]]
[[분류:스크립트 언어]]
[[분류:유닉스 프로그래밍 도구]]
[[분류:C 프로그래밍 언어 계열]]
[[분류:아티스틱 라이선스 소프트웨어]]
[[분류:동적 프로그래밍 언어]]
[[분류:자유 컴파일러와 인터프리터]]
[[분류:다중 패러다임 프로그래밍 언어]]
[[분류:동적 타입 프로그래밍 언어]]
[[분류:텍스트 지향 프로그래밍 언어]]
[[분류:고급 프로그래밍 언어]]