in reply to
chop() and chomp()
I might add the one bit that made me curious (and that I've never really investigated) you didn't really expand on. Specifically, how the function of "$/" works. Admittedly, it's not something one fools with too often, but a bit of explanation may be in order.
So, I ran some quick tests just to look at what happens when you modify $/. Some of these have implications even when you don't modify $/ -- for example, only one newline will be removed, even if there are two.
print; ##prints 'lafb', removes 'abc' as expected
print; ## prints 'lafbabcq', does not remove embedded 'abc'
print; ## prints 'lafbab', does not remove partial $/ -- 'ab'
print; ## prints 'lafbc', does not remove partial $/ - 'bc'
print; ##prints 'lafabc', only removes ONE $/
Note that the whole string in $/ needs to be present to be considered an "end-of-line" (it doesn't pick out portions of $/), and that it won't remove embedded $/'s.
These things I think might be helpful to beginners as examples. Also, you might have included the warning about parentheses
chomp $a, $b; ## this means chomp $a, but leave $b alone!
chomp ($a, $b); ## this means chomp both
I'm going to reserve upvotes/downvotes -- I think you can improve the tutorial considerably and make it worthy of an upvote.