The Perl interpreter is a program written in C that can be compiled on almost any operating system. However, precompiled versions rarely use systems such as BeOS and OS / 2 and are not always up to date.
The source code comprises approximately 50 MB and contains Perl scripts, which take over the function of Makefile, and the test – suite. Currently, the compiled program is about 850 KB in size, but may vary depending on the operating system used, the compiler and libraries.
Perl scripts are stored in text files with any line separator. When running a script, it is read by the Perl interpreter, converted into a parse tree, which is then executed to bytecode. The built-in interpreter parser is a customized version of GNU Bison.
Strictly speaking, Perl is therefore not an interpreted language, since a Perl program is compiled before each execution. This leads to the fact that – unlike in purely interpreted languages – a program with syntax errors will not start.
At the beginning, Perl was a UNIX tool that was designed especially for the processing of text files that control other programs and to issue reports.
Perl also got a reputation as a glue language, because with the help of relatively fast written Perl scripts that can be connected to incompatible software. To date, Perl is standard on all POSIX-compliant Unix-like systems.
With the proliferation of the internet, Perl has been increasingly used to connect web servers, databases and other programs and data to output the results in the form of HTML pages.
The Perl interpreter is addressed via CGI or FastCGI from the web server or embedded directly in the server. ( mod_perl in Apache, ActiveState PerlEx in Microsoft IIS).
Although PHP became more popular for this server-side script programming, Perl is still used by many large and small web sites and online services like Amazon.com, IMDb.com, slashdot.org , MovableType, LiveJournal and XING.
Since Perl scripts are often hardly recognizable in many important points, Perl was also referred to jokingly as the tape that holds the Internet. In Perl also emerged frameworks such as Mason, Catalyst, Jifty, Mojolicious and Dancer, which allow a very rapid development of complex and easily modifiable web pages.
Also wiki software is often written in Perl , such as Social Text , which is based on Mason, Kwiki , TWiki , Foswiki , ProWiki or UseMod . Also widespread ticket systems with web interface as Bugzilla or RT are written in Perl .
However, Web applications are still only one of the many applications of Perl. Important Perl programs in the e -mail field is SpamAssassin (spam filter), popfile and openwebmail.
For system administration Perl, for example, in Debconf, a part of the package management of Debian operating system. Also automake, part of the GNU build system is written in Perl.
Other main areas of application are the Data Munging and bioinformatics , where Perl since about 1995, was the language most commonly used and is still significant.
The reasons for this are again the ability to process information in text form, and the flexibility and openness of the language, which will allow the international research community to work together despite different standards of institutions.
BioPerl is here the most important collection of freely available tools that focuses primarily on the areas of genomic sequences analysis. When the Human Genome Project Perl played an important role.
Even desktop applications and games like Frozen Bubble can be written in Perl. Today’s computers are fast enough to run these programs smoothly.
Areas where scripting languages such as Perl can not be sensibly used, on the one hand applications with high demands on hardware near or speed such as drivers or codecs.
On the other hand, they should not be used in strong safety-critical applications (such as aircraft control), as a result of lax syntax check (eg missing / very weak type system) many errors occur at runtime and verification in general is not possible.
A Perl port existed for over 100 operating systems. The only operating systems for which (still) exists no known port are: