
"This is the third in O'Reilly's series of landmark Perl tutorials, which includes Learning Perl, the introduction to the basics of Perl syntax, and Intermediate Perl, the guide to creating re-usable Perl software. By conveying Perl's special models and programming idioms, Mastering Perl pulls it all together to help you bend Perl to your will." "This book isn't a collection of clever tricks, but a way of thinking about Perl programming so you can solve real-life problems of debugging, maintenance, and configuration that you encounter as a working programmer." "Mastering Perl starts you on your path to becoming the person with the answers or, failing that, the person who knows how to discover and troubleshoot the problem."--Jacket.
Sure:
I already mentioned
Mark Jason Dominus: "Higher-Order Perl"
as it is a great introduction of functional programming and goes into all the gory details of how to implement lazy evaluation on top of closures.
Damian Conway: "Object Oriented Perl"
Comes to my mind as well. It's basically an introduction to object oriented programming so kind of similar in spirit to "Higher-Order Perl". It even talks about implementation techniques of OO protocols. Neat stuff.
These books are great even today as they transcend the Perl language.
A little outdated but still great to read are:
Randal L. Schwartz "Learning Perl"
Randal L. Schwartz "Intermediate Perl"
Brian D Foy "Mastering Perl" (my personal favorite in this series)
if you need to learn Perl 5 today.
I personally also liked
Tom Christiansen, Nathan Torkington: "Perl Cookbook"
which was basically just a large collection of programming solution recipes but usually also contained elaborate discussions on the various pros and cons of the corresponding solutions. I think it was in this book I first learned about the Fisher–Yates shuffle algorithm.
Brian D Foy: "Learning Perl 6" is a great book about Raku and is a more recent example of the great heritage of high quality introductory books about programming in the Perl domain.
Start with the greatest books every written:
Programming Perl - https://www.oreilly.com/library/view/programming-perl-4th/97...
Continue with the second greatest book ever written:
Intermediate Perl - https://www.oreilly.com/library/view/intermediate-perl/05961...
Followed by equally amazing book by the greatest programmer in the world:
Higher Order Perl - https://hop.perl.plover.com/
And of course:
Mastering Perl - https://www.oreilly.com/library/view/mastering-perl/97805965...
To get super quick in the command line, also you might want to get my book:
Perl One-Liners Explained - https://nostarch.com/perloneliners
Finally, join #perl on Libera Chat.
AS A NEW USER WE LOVE YOU WITH GREAT HUGE LOVE.
(Also screw all Python programmers, what a bunch of losers with their indenting rules and PEPs. Weirdos. Whenever you hear somone say Python is good or interesting, run.)
Test-Driven Development with Python
iOS Game Development Cookbook
Java Performance: The Definitive Guide
Continuous Enterprise Development in Java
Clojure Cookbook
Mastering Perl, Second Edition
Mining the Social Web, Second Edition
Java Network Programming, Fourth Edition
Understanding and Using C Pointers
Embedded Android
ZeroMQ
Programming Android, Second Edition
Geolocation in iOS
Programming Computer Vision with Python
Safe C++
Python and AWS Cookbook
Guilty. Facepalm. Embarassed. Fixed.
> lack of strict
Not in scope (it's not a tutorial on good Perl), but I'll mention it.
> lack of warnings
Added a general disclaimer in the abstract.
> lack of my
I documented `my` in the subsection on scoping disciplines.
I _tried_ not to use features before I'd introduced them.
And, for most of the "probes," `my` wasn't necessary.
> bareword filehandles
Good point. Added scalar filehandles, as well as how to pass bare words with typeglobs.
Changed most examples to scalar filehandles too.
In doing so, I stumbled across the implicit method invocation form that happens when the first argument to a procedure is an object, so I added an example of that too.
This is exactly the kind of "semantic surprise" that led me to start digging.
> mentions &-calling of subs
Of course.
It's possible, and it can change the semantics of procedure call.
> thinks it's the same as normal calling
I had documented the differences.
Look carefully: The procedure call example includes an error case.
In the parameter passing subsection, I had included a mention of how `&proc` (no args), receives current @_.
> snowflake formatting style
Yep. Definitely not a style guide.
> mentions EXTREMELY outdated books as further reading
I added a link to Modern Perl (as suggested).
And, the new edition of Mastering Perl came out last week. It flipped through it, and it seemed updated.
> confuses capitalization of builtins in code examples
Bug. Fixed.
> fails to explain compile phase semantics properly, instead introduces "use" as magical
Guilty.
I thought about including this in the first revision, but I was nearing exhaustion. I'll add it later.
> quotes hash keys
It's legal.
> explains prototypes as something that could be used in general
I just explain what they are.
They're a part of the language, and they have important consequences for both parsing and interpretation.
> explains post-fix dereference syntax, but describes cumbersome circumfix syntaxes as default
I don't endorse either syntax as default.
> 2-arg open instead of 3-arg open
I'm not trying to document the library, or teach good use, but I added an example for 3-arg.
Thanks for your feedback!
