Lexing and Parsing Continued
Many practical programming problems require you to parse data. Ron Savage continues his demonstration of Marpa and other tools and techniques for lexing and parsing data. Put down the regexps; get it right this time.
Read it
An Overview of Lexing and Parsing
Perl programmers spend a lot of time reading, modifying, and writing data. When regular expressions aren’t enough, turn to something more powerful: parsing.
Read it
New Features of Perl 5.14: unicode_strings
Perl 5.14 provides a new feature called unicode_strings to improve Unicode string handling.
Read it
New Features of Perl 5.14: IO::File on Demand
Perl 5.14 loads IO::File on demand for autovivified filehandles.
Read it
New Features of Perl 5.14: Non-destructive Substitution
Perl 5.14 adds non-destructive substitution.
Read it
perl5i Makes More Simple Things Simple
Suppose that you want to load a module dynamically (you have the name in a scalar), then alias a function from that module to a new name in another class. In other words, you want a renaming import. How do…
Read it
Idioms, or How to Write Perlish Perl
Any language—programming or natural—develops idioms, or common patterns of expression. The earth revolves, but we speak of the sun rising or setting. We talk of clever hacks and nasty hacks and slinging code. We ping each other on IRC to…
Read it
Programming is Hard, Let's Go Scripting...
I think, to most people, scripting is a lot like obscenity. I can’t define it, but I’ll know it when I see it. Here are some common memes floating around: Simple language “Everything is a string” Rapid prototyping Glue…
Read it
Lightning Strikes Four Times
by Mike Friedman Good software design principles tell us that we should work to separate unrelated concerns. For example, the popular Model-View-Controller (MVC) pattern is common in web application designs. In MVC, separate modular components form a model, which…
Read it
Using Java Classes in Perl
I started a new job recently to refocus my career from systems administration to web development. Part of that move meant using Java as my primary language at work and using a relatively new technology from the Java Community…
Read it
Hash Crash Course
When I teach about hashes, I do what most Perl tutors and tutorials do: I introduce the hash as a “dictionary”: a mapping between one thing and another. The classic example, for instance, is to have a set of…
Read it
Still More Perl Lightning Articles
Using Module::Build, using Swing from Perl, turning modules into scripts, adding mocks to test fixtures-it’s time for more Perl lightning articles!
Read it
Advanced Subroutine Techniques
In “Making Sense of Subroutines,” I wrote about what subroutines are and why you want to use them. This article expands on that topic, discussing some of the more common techniques for subroutines to make them even more useful….
Read it
More Advancements in Perl Programming
Around Easter last year, I finished writing the second edition of Advanced Perl Programming, a task that had been four years in the making. The aim of this new edition was to reflect the way that Perl programming had…
Read it
Logic Programming with Perl and Prolog
Computing languages can be addictive; developers sometimes blame themselves for perceived inadequacies, making apologies for them. That is the case, at least, when one defends his or her language of choice against the criticism of another language’s devotee. Regardless,…
Read it
Making Sense of Subroutines
Editor’s Note: This article has a followup in Advanced Subroutine Techniques. A subroutine (or routine, function, procedure, macro, etc.) is, at its heart, a named chunk of work. It’s shorthand that allows you to think about your problem in…
Read it
Ten Essential Development Practices
The following ten tips come from Perl Best Practices, a new book of Perl coding and development guidelines by Damian Conway. 1. Design the Module’s Interface First The most important aspect of any module is not how it implements…
Read it
Understanding and Using Iterators
The purpose of this tutorial is to give a general overview of what iterators are, why they are useful, how to build them, and things to consider to avoid common pitfalls. I intend to give the reader enough information…



