Java Traps
There is no
mainin Perl or, rather, no:public static void main(String[ ] argv) throws IOException
Perl allocates memory for you as you need it by growing its arrays and hashes on demand. Autovivification means that if you assign to it, there’ll be room for it.
Perl doesn’t make you declare your variables in advance unless you
use strict.In Perl, there is a difference between a thing and a reference to a thing, so you (usually) have to explicitly dereference the latter.
Not all functions need to be methods in Perl.
String and numeric literals aren’t usually objects in Perl—but they can be.
Java programmers looking to define a data structure using a class may be surprised that Perl builds these up out of simple data declarations mixing anonymous hashes and arrays. See Chapter 9.
Instance data on a Perl object is (usually) just a value in the hash used for the object, where the name of that hash field corresponds to the name of instance data in Java.
Privacy is optional in Perl.
The function that a method invocation ends up calling is not determined until runtime, and any object or class with a method by that name is just fine by Perl. Only the interface matters.
Perl supports operator overloading.
Perl does not support function overloading by signature. See the
Class::Multimethodmodule on CPAN.Perl allows multiple inheritance, although this more corresponds to multiple interfaces in Java, since Perl classes inherit only methods, not data.
A Java
charis not an abstract Unicode codepoint; ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access