This section is an ever-growing online textbook, from which you can learn the basics of Perl, or some nifty stuff you haven't seen before.
Should I post here?
While you can post directly to the Tutorials section, this has certain drawbacks. A generally better approach is to follow this procedure:
- Write up your draft tutorial and put it in your scratchpad; broadcast requests for comments in the chatterbox and elsewhere.
After revising, - Post it as a new Meditation, with "RFC" in the title.
Later, if it is generally acclaimed to be worthy of Tutorials, but needs more work first, then make the necessary revisions and - Post the final version as a Tutorials node.
If you would be interested in writing a Tutorial but aren't sure what to write about, or if you have an idea for a Tutorial but can't commit to writing it — check out the Tutorials Quest!
Also of interest: How does editing work in the Tutorials section?
If you have Tutorials-related questions or requests, you may /msg them to Pedagogues.
All of the following categories are Perl related, with the exception of the first one, which is PerlMonks related, and the last one.
Tutorial Categories
New Tutorials (Top)
Understanding and Using PerlMonks (Top)
Here are some tutorials to help you get started with various aspects of using PerlMonks — affectionately known as the "Monastery".
(Also check out this related section in the Code Catacombs)
- PerlMonks for the Absolute Beginner
- Welcome to the Monastery! Make yourself at home.
- How (Not) To Ask A Question
- How to RTFM
- How to ask questions the smart way
- Why questions go unanswered
Getting Started with Perl (Top)
Here are some accessible tutorials for those who are just starting out:
- Perl Babysteps 1: Your First Simple Script
- Perl documentation documentation
- Searching Perl Documentation
- The basics
- Common Beginner Mistakes
- Introductory Perl Tutorial Course for Windows
- Robert Pepper's Perl Tutorial
- Data Types and Variables
- Context in Perl
- Operators
- Flow Control Structures
- Special Variables, Options, and Pragmas
- Perl Installation
- Documenting Code
Getting Deeper Into Perl (Top)
- Variables and Scoping
- Files and Directories
- List Processing, Filtering, and Sorting
- Perl Idioms Explained
- Perl Idioms Explained - $|++
- Perl Idioms Explained - keys %{{map{$_=>1}@list}}
- Perl Idioms Explained - ${\$obj->method} and @{[sort @list]}
- Perl Idioms Explained - my $string = do { local $/; <FILEHANDLE> };
- Perl Idioms Explained - @ary = $str =~ m/(stuff)/g
- Perl Idioms Explained - && and || "Short Circuit" operators
- Perl Idioms Explained - !!expr
- Perl Idioms Explained - my ($foo, $bar) = @{shift(@_)}{qw/ -foo -bar /}
- Perl Idioms Explained - my $count = () = /.../g
Strings (Top)
Related Q&A- quotes in Perl
- Understanding Split and Join
- chop() and chomp()
- Using (s)printf()
- Pack/Unpack Tutorial (aka How the System Stores Data)
- How to reverse a (Unicode) string
Subroutines (Top)
Related Q&A- (Subroutine) Arguments explained (sort of.)
- Closure on Closures
- Recursion: The Towers of Hanoi problem
- How A Function Becomes Higher Order
- How To: Make An Iterator
- Creating Nested Functions
- Far More than Everything You've Ever Wanted to Know about Prototypes in Perl -- by Tom Christiansen
Input and Output (Top)
Related Q&A- Basic Input and Output
- File Input and Output
- Parsing your script's command line
- read()
- Suffering from Buffering
Modules: How to Create, Install, and Use (Top)
- Installing Modules
- A Guide to Installing Modules
- A guide to installing modules for Win32
- A guide to installing modules for Win32 (2022 Edition)
- Compiling C/C++ based Modules under ActiveState using MinGW
- Installing Modules on a Web Server
- Installing CPAN on a Windows system
- Installing perl modules via webmin
- Embedded Perl: Installing Perl and Mojolicious on Arduino Yún / OpenWRT ChaosCalmer
- Installing DBD::Oracle on Mac (El Capitaine)
- Using Modules
- Creating and Distributing Modules
Web Programming (Top)
Related Code
See also: merlyn's WebTechniques Perl columns.
- Working with HTML
- Framework, Templating, and Content Management Systems
- CGI Programming
- Web Client Programming
Win32 (Top)
Related Code- A guide to installing modules for Win32
- A Practical Guide to Compiling C based Modules under ActiveState using Microsoft C++
- Calling .NET Assemblies with Win32::OLE
- Creating COM and DCOM objects with Perl
- HowTo build and distribute a PPMed module for Win32
- Installing Perl on a Windows PC
- Schedule Win32 Perl Scripts with AT
- Shipping standalone perl apps on Win32
- Using Win32::OLE and Excel - Tips and Tricks
- Win32 Execution: UNiX Style (NT)
- (Not Quite Perl) Running Scripts from Right-Click Context Menu in Windows
- How to install Win32::OLE under Linux?
- Microsoft Project and Perl
XML Technologies (Top)
- XML::Parser Tutorial
- Does your XML::Simple code pass the strict test?
- Stepping up from XML::Simple to XML::LibXML
- Adding elements using XML::Simple
- Adjacency List Processing in XML::Twig
- Using Perl XPath for converting Infopath XML files to Word Documents
- XML::Generator::DBI Tutorial
- XML for Perl developers by IBM DeveloperWorks
- Two XML Processing tutorials by mirod
Pattern Matching, Regular Expressions, and Parsing (Top)
Related Q&A- Character Class Abbreviations
- Common Regex Gotchas
- Don't Use Regular Expressions To Parse IP Addresses!
- Extended Patterns of Regular Expressions
- How will my regular expression match?
- Parsing with Regexes and Beyond
- Quantifiers in regular expressions
- Regexp do's and don'ts
- Regular Expressions Tutorial, the Basics (for BEGINNERS)
- A regex tutorial by Carl Franklin and Gary Wisniewski
- String matching and Regular Expressions
- Using Look-ahead and Look-behind
Database Programming (Top)
Related Q&A and Code- Accessing Microsoft SQL Server from Linux using DBD::Sybase
- Class::DBI Intro
- DBI recipes
- The fine art of database programming
- Handling huge BLOB fields with DBI and MySQL
- Reading from a database
- Speeding up the DBI
- Tricks with DBI
- Web Logs Using DBI
- Databases made easy
Object Oriented Programming (Top)
Related Q&A- Perl Object Oriented Meta-Tutorial
- Tutorial: Introduction to Object-Oriented Programming
- A simple example OO script for total beginners
- Blessables -- What Can You Make Into Objects?
- Often Overlooked OO Programming Guidelines
- Using can With Inheritance
- Object Oriented configuration values
- Object Serialization Basics
- Objects with Private Variables
- Perl Singletons
- The tie()s That Bind
- Tie: Creating Special Objects
- Undoable Objects
- It's a dog, but what kind? (polymorphism , in Perl OO)
- Basic Objects with Overloaded Operators
- Overloading '='
- Perl Design Patterns: About Objects
- perldoc perlobj: Objects
- perldoc perlootut: Object-Oriented Programming in Perl Tutorial
User Interfaces (Top)
Related Q&A and Code- Using GD output for HTML imagemaps -- GD::Graph::Map recipe
- Tips and Pointers using ncurses with perl
- Flash graphics with perl: installing ming
- Beginning Perl/Tk
- Tk Tutorial, Featuring Your Very Own "Perl Sig/OBFU Decoder Ring"
- Gtk Tutorials
- wxPerl Tutorials
Testing and QA Tutorials (Top)
- Automated software testing: emulation of interfaces using Test::MockObject
- Mocking accessors with Test::MockObject
- Tools that may improve the overall quality of a module
- Basic Testing Tutorial
Debugging and Optimization (Top)
- Benchmarking Your Code
- Profiling your code.
- Debugging Perl scripts which use fork()
- Common Causes for "Modification of a read-only value attempted"
- Basic debugging checklist
- Using Test-Point Callbacks for Automated Diagnostics in Testing
Threads, Multi-Processing, and Inter-Process Communication (Top)
- Working with other processes and programs
- Things you need to know before programming Perl ithreads
- Debugging Perl scripts which use fork()
- Using select and IO::Select
- Threads: why locking is required when using shared variables
- Perl's Warn and Die Signals
- Introduction to Parallel::ForkManager
- An introduction to POE
- Reading from more than one socket at once
Network Programming (Top)
Related Q&A and Code- Managing your IP space with Perl
- A Simple Socket Server Using 'inetd'
- MP3 server with IO::Socket
- Using the SNMP module from the Net-SNMP library
- Beginners guide to Net::FTP
- Perl and Net::Pcap
- Using Net::LDAP to access and update LDAP directories
Miscellaneous Modules (Top)
- Getting started with DateTime
- Getting Started with GnuPG and GPG
- Getting Started with Inline::C
- Lingua::Romana::Perligata - Basica Basicum Basicus
- A Beginner's Guide to Using Mail::Audit and Mail::SpamAssassin
- Introduction to Tree::DAG_Node
- The Perl Data Language (PDL): A Quick Reference Guide
- Text::Table Tutorial
- Parse::RecDescent
- How do I send email through GMail?
Miscellaneous Perl Tutorials (Top)
- Perl and Bioinformatics
- Character Encodings in Perl - offsite tutorial by moritz
- perlunitut: Unicode in Perl
- Writing highly obfuscated code in Perl
- PerlGuts Illustrated
Non-English Tutorials (Top)
- (lang: de) Referenzen
- (lang: lt) CGI/Perl Script Security
- (lang: nl) Objecten voor beginners
- Criando uma conta no PerlMonks (now sitefaqlet)
- Eu preciso de ajuda! Quem pode me ajudar? (now sitefaqlet)
- Antes que vocę escreva...
- Benvindo ao Mosteiro! Sinta-se em Casa (PT_BR)
- Spanish translation of pack/unpack tutorial
- POD en 5 minutos
- Ámbito de variables en Perl: lo básico
Other Topics (Top)
Topics which aren't really about Perl, but which are of interest to the Perl programmer.- Big-O Notation - What is it good for?
- An informal introduction to O(N) notation
- A Beginning Guide To Evolutionary Algorithms
- LZW Demystified
- Learn vi/vim in 50 lines and 15 minutes
- Using CVS for revision control
- Introduction to Technical Writing/Documentation
- Exploring Programming Language Architecture in Perl
- Database design with UML and SQL