perlmeditation
woolfy
This page is in need of an update, I know. It was a lot of work to make this page in the first place, and to update it, is also a lot of work. A lot of new books, websites and other interesting Perl things have appeared, and several things that are mentioned below are no longer available. I will do a major update later this year (this is written in July 2009, while on my way to YAPC::Europe), probably next month. My apologies for any errors in links to non-existing websites.
<a name=toc></a>For learning Perl the TMTOWTDI paradigm of Perl applies: there's more than one way to do it. This node contains a description of the where and how to learn Perl. The where concerns the materials: books, magazines and websites that can be used to learn Perl, with enough in there for everybody, from initiate to monk to saint and perhaps even the gods. The how concerns the way to learn Perl: some people like to read a book on paper, others prefer online texts, others want to read just a little and just want to work with scripts and learn from there on. Here are goodies for either type of people.
<p>
<h3>Categories</h3><ul><li>
<a href=?node=284175#intro>Introductions and tutorials</a></li><li>
<a href=?node=284175#books>Books</a></li><li>
<a href=?node=284175#know>Knowledge Centers</a></li><li>
<a href=?node=284175#docu>Documentation</a></li><li>
<a href=?node=284175#scripts>Programs, scripts, modules</a></li><li>
<a href=?node=284175#other>Other sources and topics</a></li><li>
<a href=?node=284175#orgs>Organizations</a></li><li>
<a href=?node=284175#ways>Several ways to learn Perl</a></li></ul>
<readmore>
<p>
<table width=100% border="0" cellspacing="3" cellpadding="3">
<tr><td colspan="3"><hr></td></tr>
<tr valign="top"><td colspan="3" valign="top"><h3><a name=intro><b>Introductions and tutorials</b></a> &nbsp; &nbsp; <i><small>(<a href=#toc>Top</a>)</small></i></h3></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.perldoc.com/perl5.8.0/pod/perlintro.html|Perl Introduction]
</td><td width="20%" valign="top">
[http://www.perldoc.com/|Perldoc.com]
</td><td width="60%" valign="top">
Online introduction to Perl 5.8<br>
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[Tutorials|Perl Monks Tutorials]
</td><td width="20%" valign="top">
[the Perl Monks guide to the Monastery|Perl Monks]
</td><td width="60%" valign="top">
The Perl Monks offer a world of knowledge on itself.<br>
<table width=100% border="0" cellspacing="0" cellpadding="0">
<tr valign="top"><td colspan="2" valign="top"><b>Tutorial Categories</b></td></tr>
<tr valign="top"><td width="45%" valign="top"><ul><li>
<a href=?node=954#monkstart>Welcome to the Monastery</a></li><li>
<a href=?node=954#perlstart>Getting Started With Perl</a></li><li>
<a href=?node=954#functions>Functions and Variables</a></li><li>
<a href=?node=954#regexdata>Regular Expressions</a></li><li>
<a href=?node=954#datafiles>Files and Databases</a></li><li>
<a href=?node=954#objorient>Object Oriented Perl</a></li><li>
<a href=?node=954#network>Network/CGI Programming</a></li></ul>
</td><td width="55%" valign="top"><ul><li>
<a href=?node=954#usingmods>Writing, Installing, and Using Modules</a></li><li>
<a href=?node=954#cpanmods>Tutorials on specific CPAN Modules</a></li><li>
<a href=?node=954#speedfix>Tips, Performance, and Troubleshooting</a></li><li>
<a href=?node=954#assorted>Miscellaneous Topics</a></li><li>
<a href=?node=954#idioms>Perl Idioms Explained</a></li><li>
<a href=?node=954#altlangs>Non-English Tutorials</a></li><li>
<a href=?node=954#related>Related Topics, Off-Site Tutorials</a></li></ul>
</td></tr></table>
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://users.easystreet.com/ovid/cgi_course/|Ovid's Web Programming Using Perl Course]
</td><td width="20%" valign="top">
[ovid]
</td><td width="60%" valign="top">
For those who know a little Perl and a little HTML: a quick and very clear course in using Perl with HTML.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://tachyon.perlmonk.org/tutorials.htm|Tachyon's Tutorials]
</td><td width="20%" valign="top">
[tachyon]
</td><td width="60%" valign="top">
Tutorials about [http://tachyon.perlmonk.org/tutorials/simple_module_tutorial.htm|modules], [http://tachyon.perlmonk.org/tutorials/cgi_help_guide.htm|CGI], [http://tachyon.perlmonk.org/tutorials/behind_the_gui_lives_the_shell.htm|shell] and more.<br>
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www-106.ibm.com/developerworks/linux/library/l-p101/?ca=dgr-lnxw61-liners1|Cultured Perl One-liners 101]<br>
[http://www-106.ibm.com/developerworks/linux/library/l-p102.html?ca=dgr-lnxw61-1liners2|Cultured Perl One-liners 101, part 2]<br>
</td><td width="20%" valign="top">
Teodor Zlatanov
</td><td width="60%" valign="top">
Tutorials about the Perl command line, file and data operations, and some other interesting stuff. And a [http://www-106.ibm.com/developerworks/linux/library/l-japh.html|beauty about JAPH]. Surfing through this IBM site other nice tutorials and articles can be found, e.g. about [http://www-106.ibm.com/developerworks/linux/library/l-make.html|MakeMaker] by Sean Dague.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.mag-sol.com/Articles/cgi1.html|CGI Programming]
</td><td width="20%" valign="top">
[davorg|Dave Cross]
</td><td width="60%" valign="top">
Tutorial in 3 parts on CGI programming. More interesting info on the website, like columns and articles.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.perltraining.com.au/notes.html|Training manuals]
</td><td width="20%" valign="top">
[http://www.perltraining.com.au/|Perl Training Australia]
</td><td width="60%" valign="top">
Perl Training Australia use several tutorials in their courses, and several of those can be downloaded here:
[http://www.perltraining.com.au/notes.html|Training manuals]. On this page you will find links to their online tutorials (pdf files): Introduction to Perl, Intermediate Perl, CGI Programming with Perl, Object Oriented Perl, Database Programming with Perl.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.stonehenge.com/merlyn/columns.html|Randal Schwartz's columns]
</td><td width="20%" valign="top">
[http://www.stonehenge.com/merlyn/|Randal Schwartz]
</td><td width="60%" valign="top">
More than 170 columns on Perl and other subjects by [merlyn|Randal Schwartz] in Linux Magazine, Unix Review and WebTechniques Magazine.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.perl.com/cs/user/query/q/6?id_topic=74|O'Reilly's list of tutorials]
</td><td width="20%" valign="top">
[http://www.oreilly.com/|O'Reilly Publishers]
</td><td width="60%" valign="top">
Overview of dozens of turorials all over the internet.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://wdvl.internet.com/Authoring/Languages/Perl/|Perl at WDVL]
</td><td width="20%" valign="top">
[http://wdvl.internet.com/|Web Developer's Virtual Library]
</td><td width="60%" valign="top">
Albeit sometimes the menu structure and the user interface of this website can be confusing and irritating, it contains quite some tutorials, examples and articles about Perl. The WDVL is a website for web developers.
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.informit.com/isapi/st~%7B1D1D1B90-2E05-4BF3-BABB-B5EC1E1094F8%7D/articles/index.asp|Perl articles]
</td><td width="20%" valign="top">
[http://www.informit.com/|informIT/Pearson]
</td><td width="60%" valign="top">
Several articles about Perl, of which some are (adaptations of) chapters of books.
</td></tr>
<tr><td colspan="3"><hr></td></tr>
<tr valign="top"><td colspan="3" valign="top"><h3><a name=books><b>Books</b></a> &nbsp; &nbsp; <i><small>(<a href=#toc>Top</a>)</small></i></h3></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://learn.perl.org/library/|Online Perl Library]<br>
[http://books.perl.org/onlinebooks|Online Perl books]
</td><td width="20%" valign="top">
[http://learn.perl.org/|Learn.Perl.Org] and [http://books.perl.org|Books.Perl.Org]</td><td width="60%" valign="top">
Complete books online:<br><ul><li>
[http://learn.perl.org/library/beginning_perl/|Beginning Perl] by Simon Cozens, Peter Wainwright</li><li>
[http://www.ebb.org/PickingUpPerl/pickingUpPerl.html|Picking Up Perl] by Bradley M. Kuhn</li><li>
[http://www.globalspin.com/thebook/|Perl for the Web] by Chris Radcliff</li><li>
[http://www.masonbook.com/book/|Embedding Perl in HTML with Mason] by Dave Rolsky, Ken Williams</li><li>
[http://macperl.com/ptf_book/r/MP/i2.html|MacPerl: Power and Ease] by Vicky Brown and Chris Nandor</li>
</ul>
One or more chapters of other books:<br><ul><li>
[http://www.oreilly.com/catalog/pmodperl/chapter/index.html|Practical Mod_perl] by Stas Bekman, Eric Cholet. [http://www.oreilly.com/catalog/pmodperl/chapter/ch06.pdf|Chapter 6: Coding with mod_perl in Mind] can be read online. </li><li>
[http://www.modperlcookbook.org/|mod_perl Developer's Cookbook] by Geoffrey Young, Paul Lindner, Randy Kobes. [http://www.modperlcookbook.org/chapters.html| 3 introductions and chapters 1, 3, 4, 7, 13, 16, Appendix B] can be read online. </li>
</ul>
Many more lists of books at [http://books.perl.org|Books.Perl.Org], for instance, check out the overview of [http://books.perl.org/publishers|publishers of Perl books].
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://safari.informit.com/?x=1&mode=books&sortKey=title&catid=itbooks.prog.perl|Safari Bookshelf Perl Books]
</td><td width="20%" valign="top">
[http://safari.informit.com/?mode=about|Safari Books Online]
</td><td width="60%" valign="top">
Several publishers cooperate in Safari Books and present more than 30 Perl books, of which parts of the books are online (every 2 first paragraphs of each section in the book). All can be read completely online for [https://secure.safaribooksonline.com/?mode=subscription&s=1&xmlid=0-596-00027-8/ch00-1-fm2xml&portal=oreilly&Key=&GUID=DB9C81CB-3A03-4 378-B7-20-3A-DD-E6-CD-90-52|a subscription fee]
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.oreilly.com/catalog/lperl3/|Learning Perl]
</td><td width="20%" valign="top">
[http://www.oreilly.com/|O'Reilly Publishers]
</td><td width="60%" valign="top">
The famous Llama Book, by [merlyn|Randal Schwartz] (and others, the latest -3rd- edition with Tom Phoenix). [http://www.oreilly.com/catalog/lperl3/chapter/ch04.html|Chapter 4, Subroutines] can be read online.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.oreilly.com/catalog/perlcdbs3|O'Reilly Perl CD Bookshelf]
</td><td width="20%" valign="top">
[http://www.oreilly.com/|O'Reilly Publishers]
</td><td width="60%" valign="top">
7 Perl books on a CD. Contents not available online but to be bought and read offline. Version 1.0 of [http://www.oreilly.com/catalog/linuxwebcdbs2/|The Linux Web Server CD Bookshelf] contained 2 other good Perl books: [http://www.oreilly.com/catalog/perldbi/|Programming the Perl DBI] and [http://www.oreilly.com/catalog/cgi2/|CGI Programming with Perl], version 2.0 contains just one good Perl book: [http://www.oreilly.com/catalog/pmodperl/|Practical mod_perl].
<br><ul><li>
<em>[http://www.oreilly.com/catalog/perlnut2/|Perl in a Nutshell, 2nd Edition]</em> by Nathan Patwardhan, Ellen Siever and Stephen Spainhour</li><li>
<em>[http://www.oreilly.com/catalog/pperl3/|Programming Perl, 3rd Edition]</em> by Larry Wall, Tom Christiansen, and Jon Orwant</li><li>
<em>[http://www.oreilly.com/catalog/lperl3/|Learning Perl, 3rd Edition]</em> by Randal L. Schwartz and Tom Phoenix</li><li>
<em>[http://www.oreilly.com/catalog/perlckbk2/|Perl Cookbook]</em> by Tom Christiansen and Nathan Torkington</li><li>
<em>[http://www.oreilly.com/catalog/perlxml/|Perl and XML]</em> by Erik T. Ray and Jason McIntosh<</li><li>
<em>[http://www.oreilly.com/catalog/perllwp/|Perl and LWP]</em> by Sean M. Burke</li><li>
<em>[http://www.oreilly.com/catalog/mastperltk/|Mastering Perl/Tk]</em> by Steve Lidie and Nancy Walsh</li></ul>
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.manning.com/perl.html|Manning's Perl eBooks]
</td><td width="20%" valign="top">
[http://www.manning.com/|Manning Publications]
</td><td width="60%" valign="top">
6 eBooks, contents not available online but to be bought and read offline.<br><ul><li>
<em>[http://www.manning.com/jenness/index.html|Extending and Embedding Perl]</em> by Tim Jenness and Simon Cozens</li><li>
<em>[http://www.manning.com/verbruggen/index.html|Graphics Programming with Perl]</em> by Martien Verbruggen</li><li>
<em>[http://www.manning.com/petersen/index.html|Web Development with Apache and Perl]</em> by Theo Petersen</li><li>
<em>[http://www.manning.com/cross/index.html|Data Munging with Perl]</em> by David Cross</li><li>
<em>[http://www.manning.com/Johnson/index.html|Elements of Programming with Perl]</em>Andrew L. Johnson</li><li>
<em>[http://www.manning.com/Conway/index.html|Object Oriented Perl]</em> by Damian Conway</li></ul>
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.awprofessional.com/isapi/st~%7BC3A9522B-A150-48EE-8D21-04F644FC80DF%7D/session_id~%7BDA59786B-235F-4C9A-8531-86C7DD59E838%7D/catalog/index.asp|Perl books at Addison-Wesley]
</td><td width="20%" valign="top">
[http://www.awprofessional.com/|Addison-Wesley]
</td><td width="60%" valign="top">
6 books, of which parts of the contents are online available.<br><ul><li><em>
[http://safari.informit.com/?XmlId=0-201-77061-X|Open Source Development with LAMP: Using Linux, Apache, MySQL, Perl, and PHP]</em> by James Lee, Brent Ware</li><li><em>
[http://www.awprofessional.com/isapi/product_id~%7B238D29F8-4D4F-493D-BB94-EF85FF47F3E0%7D/catalog/product.asp|The Web Wizard's Guide to Perl and CGI]</em> by David Lash</li><li><em>
[http://www.awprofessional.com/isapi/product_id~%7BE5FD3447-21ED-4B07-ACC9-33A979A3E835%7D/catalog/product.asp|Writing CGI Applications with Perl]</em> by Kevin Meltzer, Brent Michalski</li><li><em>
[http://modperl.com:9000/perl_networking/|Networking Programming with Perl]</em> by Lincoln Stein. [http://modperl.com:9000/WWW/sample_chapter/ch8.html|Chapter 8, Working with Server Scripts], is available online. The source code from all chapters is available too.</li><li><em>
[http://www.awprofessional.com/isapi/product_id~%7BECADA35C-BE2D-4E8E-8AD5-D2987FE5003E%7D/catalog/product.asp|Effective Perl Programming: Writing Better Programs with Perl]</em> by Joseph N. Hall, Randal Schwartz</li><li><em>
[http://www.awprofessional.com/isapi/product_id~%7BD5D5F186-88F5-4BC7-9BEC-4A82862814C8%7D/catalog/product.asp|CGI Programming in C and Perl] by Thomas Boutell</em></li>
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://modperl.com:9000/|Writing Apache Modules with Perl and C]
</td><td width="20%" valign="top">
[http://www.oreilly.com/|O'Reilly Publishers]
</td><td width="60%" valign="top">
Written by Lincoln Stein and Doug MacEachern. Chapters 6, 7, 8 and 9 are available online. The source code from all chapters is available too. Lots of other interesting stuff can be found on this website, like handouts and slides and demos of [http://modperl.com:9000/perl_conference/|Lincoln's Perl tutorials].
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.cgi101.com/class/|CGI programming 101]
</td><td width="20%" valign="top">
[http://www.cgi101.com/|CGI101.com]
</td><td width="60%" valign="top">
Written by [http://lightsphere.com/|Jacqueline Hamilton]. The first six chapters available online. The source code from the remaining chapters is available too.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.cgi101.com/advanced/|CGI programming 201]
</td><td width="20%" valign="top">
[http://www.cgi101.com/|CGI101.com]
</td><td width="60%" valign="top">
Developing Web Message Boards and Web Logs. Written by [http://lightsphere.com/|Jacqueline Hamilton]. No chapters available online. The source code from all chapters is available though.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.peachpit.com/isapi/st~%7BB2165C24-0E68-469E-8D23-5DA26FA899D9%7D/session_id~%7B95DDD15E-C677-48A7-85BE-C40106D04F37%7D/product_id~%7B2E19D9B7-D079-42D4-9355-280B71BB900D%7D/books/product.asp|Perl and CGI]
</td><td width="20%" valign="top">
[http://www.peachpit.com/|Peachpit Press]
</td><td width="60%" valign="top">
[http://www.cookwood.com/perl/perlbookframe.html|Perl and CGI for the World Wide Web: Visual QuickStart Guide], Elizabeth Castro's book for beginning Perl programmers. [http://www.peachpit.com/content/images/0201735687/samplechapter/chapter07.html|Chapter 7] can be read online.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://vig.prenhall.com/catalog/academic/product/0,4096,0130282510,00.html|Perl by Example]
</td><td width="20%" valign="top">
[http://vig.prenhall.com/catalog/academic/course/0,4095,793,00.html|Prentice Hall]
</td><td width="60%" valign="top">
Written by Ellie Quigley. [http://vig.prenhall.com/samplechapter/0130282510.pdf|Chapter 14] can be read online (it's a PDF file).
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.oreilly.com/catalog/perllwp/|Perl & LWP]
</td><td width="20%" valign="top">
[http://www.oreilly.com/|O'Reilly Publishers]
</td><td width="60%" valign="top">
Written by Sean M. Burke. LWP (Library for WWW in Perl) to let your programs download and extract information from the Web: how to make web requests, submit forms, provide authentication information, using regular expressions, tokens, trees to parse HTML. [http://www.oreilly.com/catalog/perllwp/chapter/ch07.pdf|Chapter 7, HTML Processing with Tokens] can be read online.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.samspublishing.com/search/index.asp?searchstring=perl&searchtype=Title|Perl books at SAMS]
</td><td width="20%" valign="top">
[http://www.sams.com/|SAMS Publishing]
</td><td width="60%" valign="top">
SAMS publishes several Perl books, like [http://www.samspublishing.com/catalog/product.asp?product_id={511C880B-7ABD-4D45-AB91-C3CCDF327C84}|Teach Yourself Perl in 21 Days], [http://www.samspublishing.com/catalog/product.asp?product_id={A5A57D1A-7E1F-4ACD-9028-63C5E7B1D2F2}|Teach Yourself Perl in 24 Hours], [http://www.samspublishing.com/catalog/product.asp?product_id={3E7042CC-7B08-4EAE-9476-A0B0B43DB9A3}|Perl Developer's Dictionary] and [http://www.samspublishing.com/catalog/product.asp?product_id={078173A6-27A2-4BD1-AEB6-5FBC1F3B83C3}|mod_perl Developer's Cookbook].
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://search.wiley.com/s97is.vts?Action=FilterSearch&filter=mainfilter.cda2.hts&QueryMode=Internet&ResultTemplate=results.cda3.hts&Collection=CDA3_US&ResultCount=25&query=perl&field=keyword|Perl books at Wiley]
</td><td width="20%" valign="top">
[http://www.wiley.com/|Wiley Publishers]
</td><td width="60%" valign="top">
Wiley publishes several Perl books, like [http://www.wiley.com/WileyCDA/WileyTitle/productCd-047197563X.html|Perl: The Programmer's Companion], [http://www.wiley.com/WileyCDA/WileyTitle/productCd-0764548271.html|Perl Weekend Crash Course], [http://www.wiley.com/WileyCDA/WileyTitle/productCd-0764549561.html|Perl Database Programming] and [http://www.wiley.com/WileyCDA/WileyTitle/productCd-047101379X.html|Custom CGI Scripting with Perl].
</td></tr>
<tr><td colspan="3"><hr></td></tr>
<tr valign="top"><td colspan="3" valign="top"><h3><a name=know><b>Knowledge Centers</b></a> &nbsp; &nbsp; <i><small>(<a href=#toc>Top</a>)</small></i></h3></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://perl.oreilly.com/|O'Reilly Perl Center]
</td><td width="20%" valign="top">
[http://www.oreilly.com/|O'Reilly Publishers]
</td><td width="60%" valign="top">
Resource center with books, news, articles, interviews, success stories, examples and much more.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.perl.com/|Perl.com The Source for Perl]
</td><td width="20%" valign="top">
[http://www.oreilly.com/|O'Reilly Publishers]
</td><td width="60%" valign="top">
Perl community website, launched by Tom Christiansen. Starting place for finding downloads, documentation, FAQ's, news, articles, columns, books and much more. Some overlap with [http://perl.oreilly.com/|O'Reilly Perl Center].
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://faq.perl.org/|Perl FAQ]
</td><td width="20%" valign="top">
Several contributors
</td><td width="60%" valign="top">
Frequently Asked Questions about Perl.<br>
<table width=100% border="0" cellspacing="0" cellpadding="0">
<tr valign="top"><td colspan="2" valign="top"><b>Major Topics</b></td></tr>
<tr valign="top"><td width="50%" valign="top"><ul><li>
[http://faq.perl.org/perlfaq1.html|General Questions]</li><li>
[http://faq.perl.org/perlfaq2.html|Obtaining Perl] </li><li>
[http://faq.perl.org/perlfaq3.html|Programming Tools] </li><li>
[http://faq.perl.org/perlfaq4.html|Data Manipulation] </li><li>
[http://faq.perl.org/perlfaq5.html|Files and Formats] </li></ul>
</td><td width="50%" valign="top"><ul><li>
[http://faq.perl.org/perlfaq6.html|Regular Expressions] </li><li>
[http://faq.perl.org/perlfaq7.html|General Perl Language Issues] </li><li>
[http://faq.perl.org/perlfaq8.html|System Interaction] </li><li>
[http://faq.perl.org/perlfaq9.html|Networking] </li></ul>
</td></tr></table>
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://perl.apache.org/|mod_perl]
</td><td width="20%" valign="top">
[http://www.apache.org/|The Apache Software Foundation]
</td><td width="60%" valign="top">
Resource center about mod_perl, the fusion of [http://www.perl.org/|Perl] and [http://www.apache.org/|Apache]. News, documentation, tutorials, guides, downloads, articles, links, mailing lists, and a lot more. [http://take23.org/|Take23] is an interesting sister site, even though big parts aren't maintained for quite a while.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://use.perl.org/|Use Perl;]
</td><td width="20%" valign="top">
[http://pudge.net/|Chris Nandor] and other Perl community members
</td><td width="60%" valign="top">
Extensive Perl community website with news, discussions, announcements, articles, links, listings and a lot more.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.perlarchive.com/index.shtml|The Perl Archive]<br>
[http://perlhorizons.com/|Perl Horizons]
</td><td width="20%" valign="top">
[http://creativefundamentals.com|Creative Fundamentals, Inc.]
</td><td width="60%" valign="top">
The Perl Archive and Perl Horizons are interlinked websites and contain many programs, scripts, a learning center, a discussion forum, articles, book reviews, chapters from books.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.pm.org/|Perl Mongers]<br>
</td><td width="20%" valign="top">
Association of international Perl User Groups
</td><td width="60%" valign="top">
Perl Mongers are the everyday life harbingers of Perl, often organizing all kinds of meetings, often monthly. Another world of knowledge on your doorstep. Really, you can be surprised how close another Monger can be near you.
</td></tr>
<tr><td colspan="3"><hr></td></tr>
<tr valign="top"><td colspan="3" valign="top"><h3><a name=docu><b>Documentation</b></a> &nbsp; &nbsp; <i><small>(<a href=#toc>Top</a>)</small></i></h3></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.perldoc.com/|Perl Documentation]
</td><td width="20%" valign="top">
[http://www.perldoc.com/|Perldoc.com]
</td><td width="60%" valign="top">
Online and extensive documentation. Of course, if you have Perl installed on your computer, this documentation is also available offline by using the <em>perldoc</em> command line command.<br>
<em>perldoc perl</em> (displays the listing of docs and describes Perl)<br>
<em>perldoc -f open</em> (displays the documentation for the "open" function)<br>
<em>perldoc -q larry</em> (displays the topics from the FAQs which contain the word "larry")<br>
<td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.perl.org/docs.html|The Perl Directory]
</td><td width="20%" valign="top">
[http://www.perl.org/|Perl.org]
</td><td width="60%" valign="top">
More online and extensive documentation.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[Library|Perl Monks Library]
</td><td width="20%" valign="top">
[the Perl Monks guide to the Monastery|Perl Monks]
</td><td width="60%" valign="top">
Another world of knowledge. A reminder is included that the Perl documentation here is outdated and that one should visit the [http://www.perldoc.com/|Perl Documentation website]. Nonetheless, this site is very accessible and links are available to corresponding documentation about aspects of Perl for the current version of Perl and to older versions.
</td></tr>
<tr><td colspan="3"><hr></td></tr>
<tr valign="top"><td colspan="3" valign="top"><h3><a name=scripts><b>Programs, scripts, modules</b></a> &nbsp; &nbsp; <i><small>(<a href=#toc>Top</a>)</small></i></h3></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.cpan.org/|CPAN]
</td><td width="20%" valign="top">
[http://www.cpan.org/|Comprehensive Perl Archive Network]
</td><td width="60%" valign="top">
Info and modules ready to use, mostly well-documented. Look here before you start write something yourself. Learn from other people's examples.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://search.cpan.org/|CPAN Search and Find]
</td><td width="20%" valign="top">
[http://www.cpan.org/|Comprehensive Perl Archive Network]
</td><td width="60%" valign="top">
Search for programs other people already might have written, so you don't have to.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[Code Catacombs]<br>
[Snippets Section]<br>
[Craft]
</td><td width="20%" valign="top">
[the Perl Monks guide to the Monastery|Perl Monks]
</td><td width="60%" valign="top">
Scripts in all sizes, full-blown programs and handy bits to use in your own scripts, written and/or made available by fellow Monks. The [Code Catacombs] are categorized in 17 groups. The [Craft] and [Snippets Section|Snippets] sections are not yet internally organized in categories, but [grinder] had made a useful [http://grinder.perlmonk.org/pmsi/|Snippets Index].
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.oreilly.com/catalog/prdindex.html|O'Reilly books listing]
</td><td width="20%" valign="top">
[http://www.oreilly.com/|O'Reilly Publishers]
</td><td width="60%" valign="top">
Handy listing of O'Reilly with books on Perl and other languages and other subjects: the list contains a column with links to examples (from books with online available examples).
</td></tr>
<tr><td colspan="3"><hr></td></tr>
<tr valign="top"><td colspan="3" valign="top"><h3><a name=other><b>Other sources and topics</b></a> &nbsp; &nbsp; <i><small>(<a href=#toc>Top</a>)</small></i></h3></td></tr>
<tr valign="top"><td width="20%" valign="top">
[Perl Monks FAQ]
</td><td width="20%" valign="top">
[the Perl Monks guide to the Monastery|Perl Monks]
</td><td width="60%" valign="top">
Questions and answers about this website and pointers to a lot of info<br>
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[news:comp.lang.perl.announce|comp.lang.perl.announce]<br>
[news:comp.lang.perl.misc|comp.lang.perl.misc]
</td><td width="20%" valign="top">
Usenet Newsgroups
</td><td width="20%" valign="top">
Read, write, discuss, announce, learn... all about Perl.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://lists.perl.org/|Perl Mailing List Database]<br>
</td><td width="20%" valign="top">
[http://www.perl.org/|Perl.org]
</td><td width="20%" valign="top">
Over 250 mailing lists about Perl and related subjects. More than you can read, write, discuss, announce, learn...
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.tpj.com/|The Perl Journal]
</td><td width="20%" valign="top">
[http://www.cmp.com/|CMP Media LLC]
</td><td width="60%" valign="top">
Magazine famous with old-time Perl users. Too bad, the archives of the magazine have been moved to a subscibers section for which has to be paid. A lot of the covers are pieces of art, cherished my many Perl Mon(ks|gers). Many of us (I do) have at least one on display in our working environment.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://perl.plover.com/|Perl Paraphernalia]
</td><td width="20%" valign="top">
[dominus|Mark Jason Dominus]
</td><td width="60%" valign="top">
Lots of info, and of course the [http://perl.plover.com/book/|Perl Advanced Techniques Handbook].
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://larsen.perlmonk.org/links/perl.html|links::perl]
</td><td width="20%" valign="top">
[larsen]
</td><td width="60%" valign="top">
Scripts, links.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://homepages.tcp.co.uk/~alounds/PerlLimericks.html|Perl Limericks]
</td><td width="20%" valign="top">
Siegfried Bublitz
</td><td width="60%" valign="top">
Scripts, a bit of explanation, links.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.perltraining.org/|Perltraining]
</td><td width="20%" valign="top">
Gabor Szabo
</td><td width="60%" valign="top">
An international list of individuals and organizations teaching Perl.
</td></tr>
<tr><td colspan="3"><hr></td></tr>
<tr valign="top"><td colspan="3" valign="top"><h3><a name=orgs><b>Organizations</b></a> &nbsp; &nbsp; <i><small>(<a href=#toc>Top</a>)</small></i></h3></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.yapc.org/|YAPC]
</td><td width="20%" valign="top">
[http://www.yapc.org/|Yet Another Perl Conference]
</td><td width="60%" valign="top">
Grassroots symposia on Perl under the auspices of [http://www.yetanother.org/|YAS]. The websites of several YAPC conferences are often quite informative, like [http://www.yapc.org/Europe/2001/talks.html|slides of talks at YAPC::Europe::2001].
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.yetanother.org/|YAS]
</td><td width="20%" valign="top">
[http://www.yetanother.org/|Yet Another Society]
</td><td width="60%" valign="top">
YAS is a non-profit corporation for the advancement of collaborative efforts in computer and information sciences. Mostly interesting for news (events) and links.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.perlfoundation.org/|TPF]
</td><td width="20%" valign="top">
[http://www.perlfoundation.org/|The Perl Foundation]
</td><td width="60%" valign="top">
Dedicated to the advancement of Perl through open discussion, collaboration, design, and code. TPF coordinates the efforts of numerous grass-roots Perl-based groups including the [http://www.yapc.org/|YAPC Conferences].TPF holds the copyright on [http://dev.perl.org/perl6/|Perl 6 and Parrot]. TPF is a unit of [http://www.yetanother.org/|YAS]. Mostly interesting for news and links.
</td></tr>
<tr><td colspan="3"><br></td></tr>
<tr valign="top"><td width="20%" valign="top">
[http://www.yapceurope.org/|YEF]
</td><td width="20%" valign="top">
[http://www.yapceurope.org/|YAPC::Europe Foundation]
</td><td width="60%" valign="top">
Dedicated provide support for Perl conferences in Europe. YEF works hand in hand with organizers of YAPC::Europe conferences and Perl workshops, on all conference related business. The aim is to provide a focal point, organise on-line registration, mailing lists, technical and conference advice and to generally support activities, encouraging Perl Conferences and Workshops in Europe and environs.
</td></tr>
<tr><td colspan="3"><hr></td></tr>
<tr valign="top"><td colspan="3" valign="top"><h3><a name=ways><b>Several ways to learn Perl</b></a> &nbsp; &nbsp; <i><small>(<a href=#toc>Top</a>)</small></i></h3><br>
Several people have asked for the best place or the best way to start learning Perl and others have answered: <a href=?node=id=1465>here</a>, <a href=?node=id=154753>here</a>, <a href=?node=id=283814>here</a> and <a href=?node=id=289329>here</a>. What is very clear is that everybody has their own way they learn something new the best way. If you've got a problem with learning something one way, please try another way, maybe that's a better way.
<p>
Ask the monks how they learned Perl and a lot of different answers will be given, ranging from reading books, attending courses and training sessions, visiting a conference, playing with and adapting small scripts found at the [Snippets Section|Perl Monks] or elsewhere on the internet, reading [http://www.perldoc.com/|the official documentation and man-pages] or [http://www.perldoc.com/perl5.8.0/pod/perl.html#Tutorials|online turorials] to -last but not least- visiting the online communities like [The Monastery Gates|Perl Monks] and [http://www.pm.org/|Perl Mongers].
<p>
To start with [The Monastery Gates|this monastery]: it is a good place to start. Take a small tour and don't forget to include the [the Perl Monks guide to the Monastery|many sections], [PerlMonks FAQ], [Library] and [Categorized Questions and Answers]. Talk to other monks in the Chatterbox. Certainly the many [Tutorials] are good to begin your quest for wisdom, like <a href=?node=id=172086>How (not) to ask a question</a>.
<p>
Before asking something, first use [Super Search|the search page] to discover whether someone asked it here, or whether it has been explained already in a meditation or elsewhere. Search first, and then read, read, read, try, adapt, retry, read, search again, for instance here:<ul><li>
[http://www.perl.com/search/|Perl.com]</li><li>
[http://search.cpan.org/|CPAN]</li><li>
[http://theoryx5.uwinnipeg.ca/mod_perl/cpan-search?request=search|alternative CPAN search page]</li><li>
[http://www.dmoz.org/Computers/Programming/Languages/Perl/|Perl at DMOZ]</li><li>
[http://lists.perl.org/search.cgi?cat=Beginners|Perl Mailing List Directory]</li><li>
[http://directory.google.com/Top/Computers/Programming/Languages/Perl/?tc=1|Perl at Google]</li><li>
[http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&group=perl|Perl groups on usenet]</li><li>
[http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&group=alt.perl|alternative Perl groups on usenet]</li><li>
[http://dir.yahoo.com/Computers_and_Internet/Programming_and_Development/Languages/Perl/|Perl at Yahoo]</li></ul>
and ask later.
<p>
Written materials (like books and magazines): just one ways to learn Perl, and a good one. Many people learn best from books. Lists with <a href=?node=284175#books>numerous books</a> about Perl can be found on several places, like on [http://learn.perl.org/|this well-known perl.org site]. Some of the most often advised books for starters (and what's been good for many might be good for you too):<ul><li>
[http://www.oreilly.com/catalog/lperl3/|Learning Perl]</li><li>
[http://www.oreilly.com/catalog/pperl3/|Programming Perl]</li><li>
[http://www.peachpit.com/isapi/st~%7BB2165C24-0E68-469E-8D23-5DA26FA899D9%7D/session_id~%7B95DDD15E-C677-48A7-85BE-C40106D04F37%7D/product_id~%7B2E19D9B7-D079-42D4-9355-280B71BB900D%7D/books/product.asp|Perl and CGI for the World Wide Web]</li><li>
[http://vig.prenhall.com/catalog/academic/product/0,4096,0130282510,00.html|Perl by Example]</li><li>
[http://www.awprofessional.com/isapi/product_id~%7BECADA35C-BE2D-4E8E-8AD5-D2987FE5003E%7D/catalog/product.asp|Effective Perl Programming]</li></ul>
<p>
Quite a lot of people insist that a course given by a tutor (maybe even an expert) is the best way to learn Perl. Lots of experts can be hired to give a course. Courses can be followed at universities, colleges and general training institutes. Prices may vary from "el cheapo" through the grassroots YAPC'es through "Cruise Superdeluxe" through full-blown commercial conferences, and quality is (as with books) not always directly related to the price. Being able to discuss Perl topics with a local expert certainly helps a lot. In any case, it is not a good idea to learn something and not use it. As with many things, an introductory course in Perl as part of a whole lot of courses and trainings and lessons, without actually using Perl to make or adapt something in Perl, is a waste of time. P is for Practical. Learn it and use it.
<p>
Others just want to learn on the go, looking for scripts, trying to understand them, playing with them. It's better to first learn the basics of Perl before you play with the scripts, but programmers who are experienced in other programming languages might recognize a lot right away, but might be confused by similarities that are actually differences. People who freshly start learning how to program: please first get some basic programming knowledge, [http://www.dmoz.org/Computers/Programming/Languages/|take a look here for a start]. Anyway, lots of [Code Catacombs|Code] can be found in the [Snippets Section], [Meditations], [Craft] and [Seekers of Perl Wisdom]. Don't be afraid to try things, and don't be put off if they don't work the first time. Trying to figure out why something doesn't work is a very good way to learn Perl. Sometimes you'll find somebody else's script is erroneous and it can be very rewarding to find its error(s).
<p>
In general, our fellow monks agree on the path to wisdom: read a lot, install perl, try some scripts, change those scripts, try to discover why certain things work the way they do and why other things go wrong, read more, try more complex scripts, play with them, etc, repeat. When you are just beginning to learn Perl, most questions you come up with have been asked already (some very often) and quite often the answers can be found here easily. So, learning Perl includes learning to search as well. You might want to postpone asking a question in [Seekers of Perl Wisdom] until you have tried to describe your question for yourself, saved the description in a file, read specific materials, try to find the answer yourself, make a script that should do what you want, and than, when you really have no idea how to solve the problem, don't be afraid to ask your fellow monks (please read [How (Not) To Ask A Question] and [Before You Post ...] before you post your first question). And still it is surprising how many questions are asked for which the answer is on the 10th page of one of the beginner's books mentioned here, or one super search party away. It might be embarrassing to find that out, but as long as it's educational...
<p>
Setting a goal helps a lot, and it's good for your motivation to learn Perl. You might set yourself to the task of building a web shop, a user and product database, an analyzer of web logs, a moderated discussion forum, a family photo album, a weblog. At first, don't just take the "easy" road right away by taking one of the many modules and examples that are around, because in the beginning it's hard to distinguish between rubbish and pearly bits, so maybe later. Write lots of small programs rather than a few big ones. The big ones come later. You might be the one that speeds up the <a href=?node=id=9108>Schwartzian Transform</a> with 50%! New people, new ways of thinking. And of course, instead of you yourself setting a goal, there are always people happy giving you an assignment (job, housework, hobby club). Can be motivating enough.
<p>
If Perl is not your first programming language, dig out some of your favorite programs that you have written in other language(s) and convert them to perl. Start with the simple ones and work your way up. It is always easier to start with something you are familiar with than trying to do something new in a new language. If your previous language was C,C++, Pascal, Basic or any of a dozen other languages you should find the transition to Perl reasonably easy and, once you get over the basic [http://www.perldoc.com/perl5.8.0/pod/perlsyn.html|syntax hurdles], a joy. Once you get passed some of the more unintuative bits of syntax, you will probably find Perl a revelation in terms of the ease with which many things that are hard to do in other languages seem to simply fall into place with Perl.
<p>
If Perl is your first programming language, you might find it helpful to read one or more books on programming basics, logic, design and history, like [http://vig.prenhall.com/catalog/academic/product/0,4096,0130083968,00.html|Understanding Unix/Linux Programming: A Guide to Theory and Practice] ([id://236311|a review]), [http://www.kohala.com/start/unpv22e/unpv22e.html|Advanced Programming in the Unix Environment] or [http://www.htdp.org/|How to design programs]. Apart from knowing the specific syntax and structure of any language, it is always helpful to have a good idea of how a program should flow and to be able to identify and use correct programming structures.
<p>
Learning a programming language is a bit like learning any language, like French or Russian. You get better the longer your experience is with it and the more you use it. Learning the basics of Perl is quite easy, learning how to program well in Perl will take some more time, some more practice, some more experience. By the time you understand (and use) more than half of all the scripts, discussions, questions and answers you see [Newest Nodes|here], you are on your way to be a good programmer. As you become more familiar with the language, you'll discover better ways of coding which had previously not occurred to you. You can hasten that learning process not just by experimenting more, but by reading books and other people's code. Even consider forcing yourself to program in Perl: if you don't know how to do something, search until you figure out how to do it and after a few months (maybe even weeks), you have become comfortable enough with Perl. By the way, Perl is big: there are not many programmers who know every command, function, module etc of Perl (if there are any). So there's nothing (or not much) to be ashamed of for not knowing a lot about it. Just be proud of what you do know.
</td></tr>
<tr><td colspan="3"><hr></td></tr>
</table>
<b>This node evolved quite a bit. Many thanks to fellow monks, especially to [gjb], [gmax], [larsen], [graff], [Louis Wu], [liz], [jarich]</b>.
<hr>
</readmore>
I've made a [http://www.perlpromo.nl/leerperl.html|Dutch version] of this page. To be used during and after the [http://workshop.perlpromo.nl/|Second Dutch Perl Workshop] I remade it into a small and simple Dutch [http://www.wendy.org/dpw5/home.htm|website].