Posted by brian d foy on March 31, 2012
Perl 5.14 added an auto-dereferencing features to the hash and array operators, and I wrote about those in Use array references with the array operators. I’ve never particularly liked that feature, but I don’t have to like everything. Additionally, Perl 5.12 expanded the job of keys and values to also work on arrays. chromatic has [...]
Posted by brian d foy on March 12, 2012
Perl comes with extracts of the Unicode character data, but it hasn’t been easy to look up all of the information Perl knows about a character. Perl v5.15.7 adds a way to created an inverted map based on the property that you want to access. The Unicode::UCD module gives you access to some of the [...]
Posted by brian d foy on February 29, 2012
You might think that you know how to compare strings regardless of case, and you’re probably wrong. After you read this Item, you’ll be able to do it correctly and without doing any more work than you were doing before. Perl handles all the details for you. If you grew up in the ASCII world, [...]
Posted by brian d foy on February 19, 2012
What if you want to write a recursive subroutine but you don’t know the name of the current subroutine? Since Perl is a dynamic language and code references are first class objects, you might not know the name of the code reference, if it even has a name. Perl 5.16 introduces __SUB__ as a special [...]
Posted by brian d foy on January 31, 2012
Perl’s powerful string manipulation tools include case-shifting operators that change the parts of a double-quoted string. There are many other things that happen in a double-quoted string too, so you need to know where these operators fit in with each other. A double-quoted string has three features: Variable interpolation Escaped and logical characters Case shift [...]
Posted by brian d foy on December 18, 2011
[ This is the 100th Item we've shared with you in the two years this blog has been around. We deserve a holiday and we're taking it, so read us next year! Happy Holidays.] Perl 5.10 added rudimentary grammar support in its regular expressions. You could define many subpatterns directly in your pattern, use them [...]
Posted by brian d foy on December 11, 2011
Perl’s basic data type is the scalar, which takes its name from the mathematical term for “single item”. However, the scalar is really two things. You probably know that a scalar can be either a number or a string, or a number that looks the same as its string, or a string that can be [...]
Posted by brian d foy on December 4, 2011
If you project depends on a interaction with a web server, especially a remote one, you have some challenges with testing that portion. Even if you can get it working for you, when you distribute your code, someone else might not be able to reach your server for testing. Instead of relying on an external [...]
Posted by brian d foy on November 27, 2011
Perl’s split has some special cases and some perhaps surprising cases. The empty pattern, zero width match, the special argument ‘ ‘, and the /^/ act differently than you might expect from the general rule. The empty pattern, // The empty pattern is a special case that’s designed to give you a list of characters. [...]
Posted by brian d foy on October 30, 2011
To create grep- or map-like syntax, you need to use Perl’s prototypes, despite whatever we told you in Understand why you probably don’t need prototypes. Perl needs the special hints that prototypes to parse a block as an argument to a subroutine. First, remember the forms of grep. There’s a single expression version and a [...]