On Thu, 27 Jul 2006, Chad Perrin defenestrated me:
> On Thu, Jul 27, 2006 at 06:24:49AM +0900, Charles O Nutter wrote:
> > On 7/26/06, Chad Perrin <perrin / apotheon.com> wrote:
> > 
> > When execution happens in Perl 5.x, on the other hand, a compiler runs
> > >at execution time, compiling executable binary code from the source.  It
> > >does so in stages, however, to allow for the dynamic runtime effects of
> > >Perl to take place -- which is one reason the JIT compiler is generally
> > >preferable to a compiler of persistent binary executables in the style
> > >of C.  Perl is, thus, technically a compiled language, and not an
> > >interpreted language like Ruby.
> > 
> > I am not familiar with Perl's compiler. Does it compile to processor-native
> > code or to an intermediate bytecode of some kind?
> 
> There is no intermediate bytecode step for Perl, as far as I'm aware.
> It's not a question I've directly asked one of the Perl internals
> maintainers, but everything I know about the Perl compiler confirms my
> belief that it simply does compilation to machine code.

  I have not been on the perl train for years, but I believe for Perl5
at least this is not true.  I remember Malcolm Beatties B module which
basically exposed the intermediate bytecodes that perl normally interprets.
That was some time ago and things may have changed?

  Here is some documentation on this (it could be old but it seems to
match my memory):

http://www.faqs.org/docs/perl5int/c163.html

  So it looks like Perl is somewhat similiar to Java (perhaps the other
way around since Perl's interpreter pre-dates Java).  An analogy of the
difference would be that Perl is CISC and Java is RISC since Perl bytecode
is higher level.  Maybe they JIT pieces?

-Tom

-- 
+ http://www.tc.umn.edu/~enebo +---- mailto:enebo / acm.org ----+
| Thomas E Enebo, Protagonist  | "Luck favors the prepared    |
|                              |  mind." -Louis Pasteur       |