in reply to portability!

Perl is portable in the sense that I can write a program in Perl that can be run on any OS with an equivalent port of Perl.

I can also write code that is not portable. Using system calls that require extra software are only portable if you provide the extra software. (For example, Sendmail is not standard on NT, so if you want to run a script that uses Sendmail you must find an NT port of Sendmail.)

Additionally there are modules that are OS specific (like the Win32 modules).

As for the term 'compile', when a script is run it is first compiled into something called Perl byte-code. This is like, but not the same as, assembly language. The interpreter then interprets the byte-code.