As a book recommendation, I have started reading the book Higher Order Perl by Mark Jason Dominus. I have only got through the first chapter, but so far I like it. I have read a good chunk of the well known SICP (Structure and Interpretation of Computer Programs, and parts of it remind me of that, due to the functional programming nature of SICP and the first chapter of Higher Order Perl.

One difference between the two books is that SICP is ofen used as a introductory textbook for computer science courses, while Higher Order Perl assumes some previous knowledge of programming. I've often heard that Perl syntax is a little different, and after the first chapter I have to say I can't disagree.

One notable piece of syntax that has stuck out at me is the use of sigils. A sigil is a symbol that is beside a variable name which tells us something about the variable. In Perl, $ is used to indicate a scalar variable, @ is used to indicate an array, and % is used to indicate a hash. Before looking into Perl, a sigil is not something I had been very aware of. I've used languages like PHP and Bash where variables get preceded by a $, but didn't realize this was widespread enough to warrant its own Wikipedia page!

Thankfully, I decided to start reading a bit more about Perl and learning its syntax before going to far into the book. Learning about the Perl sigils has already helped make some code in the first chapter of Higher Order Perl clearer.

Edit (20/12/2016):I was searching Reddit for information about Higher Order Perl, and found a thread where someone was asking how they should read the book. You can see there that the author replied (he says elsewhere in the thread that he is the author), and says that

"I think the book requires a medium background in Perl, and little or no background in functional programming."
This is pretty close to what I stated in the second paragraph, so I'm glad that I have an idea of what level the book was written at!