You know, this looks much worse then it actually is. You have to read it backwards since everything is chained together though.
First, you split your string on : or ?, which creates a list of numbers. That list is feed to map. Map then takes each number and runs it through a series of decrement and trinity operators. This continues until the number is 0, then a letter is returned. If you want to figure out which letter corresponds to which number, then you start at the end (with the ',') and count towards the beginning until you reach the number. Since map returns a list, a join is used to combine all the letters into the string 'print"Just another Perl hacker," '. Finally the string is evaluated, and the output printed.
How did I do? This is my first try at this, so let me know if I missed anything!