The guts of Perl is defined well enough that it becomes a relatively straightforward task to embed the Perl compiler/interpreter inside another application, or to extend Perl by connecting it with arbitrary code written in C/C++ (or having a C-like interface). In fact, about a third of the on-line documentation for Perl is specifically devoted to embedding and extending Perl. The perlembed, perlapi, perlxs, perlxstut, perlguts, and perlcall documentation pages cover these topics in depth.
And because Perl is freely reusable, you can write your proprietary spreadsheet application, using an embedded Perl to evaluate the expressions in your spreadsheet cells, and not have to pay one cent in royalties for all that power. Joy.
Perl was designed
with security in mind. See Chapter 6 of Programming
Perl or the perlsec documentation
about taint checking. This is the kind of security where you trust
the writer of the program, but not the person running it, such as is
often the case with server-launched programs. The
Safe
module, covered in the
Safe
documentation and Chapter 7 of
Programming Perl, provides something else
entirely: the kind of security necessary when executing (as with
eval
) unchecked code.
No, Perl doesn’t really have these statements, but you can easily make them by using more basic constructs. See Chapter 2 of Programming Perl or the perlsyn documentation.
Sometimes Perl’s high-level I/O is a bit too high-level for what you need to do. Chapter 3 of Programming Perl and the perlfunc documentation cover direct access to the raw system calls for I/O.
Although we speak of Perl as compiling your code before executing it, this compiled form is not native object code. Malcolm Beatie’s Perl compiler project can produce standalone byte code or compilable C code out of your Perl script. The 5.005 release of Perl is expected to have native code generation included as part of the standard release. See the material in the perlfaq3 documentation about this.
Yes, Perl can interface directly with your commercial database servers, including Oracle, Sybase, Informix, and ODBC, just to name a few. See the database section in the CPAN modules directory for the relevant extension modules.
Using references, you can build data structures of arbitrary complexity. These are discussed in Chapter 4 of Programming Perl, and in the perllol , perldsc, and perlref documentation. If you prefer an object-oriented data structure, see Chapter 5 of Programming Perl, or the perltoot and perlobj documentation.
Perl can store and
pass pointers to functions via the &funcname
notation, and call them indirectly via
&$funcptr($args)
. You can even write functions
that create and return new anonymous functions, just as you could in
languages like Lisp or Scheme. Such anonymous functions are often
called closures. See Chapter 2 of
Programming Perl and the perlsub
and perlfaq7 documentation for
details.