...
is a 3-in-one power house
I like that perl has stuff like ...
..
goes by many names, but it is actually 3 fairly neat things.
perldoc
yada-yada - a placeholder for unimplemented code.
In void context ...
is the "yada yada". It is fatal and dies with "unimplemented".
You can use this while planning out a module. You can quickly throw down a
sub write_me_later { ... }
... and when you call it (say from your tests) perl
will remind you that you haven't written that sub yet.
A flip flop - with set/reset!
In scalar context it returns true after the thing on the left is true, until the thing on the right becomes true.
This is the set/reset behaviour of a "flip flop", and it is really helpful when parsing lines of a file.
while(<>) {
if (/flip/.../flop/) {
# every line between a flip and a flop (including the lines that do)
say "flipped: $_"
}
}
Simply /start-of-range/../end-of-range/
is true between those two matches.
Ranges - trade two numbers for many!
Unsurprisingly in list context ...
gives a list, it works with similar rules to ++
, so:
- 1..10
gives you back the numbers you expect.
- "OWF1".."OWF9"
gives you back a list that includes "OWF6"
It's particularly handy for avoiding off-by-one's when looping over arrays:
for (0..$#array) { # No < @array... or is it <= @array?
printf "I'm at index %s, which is: %s\n", $_, $array[$_]
}
It all comes from context
I think it's very cool that 2 or 3 characters can do all of these things, and that their meaning comes entirely from the context.
That's it.
I just think that's neat.