Embedded perl

From SlackWiki
Jump to: navigation, search

How to Install Embedded Perl on Slackware 12.0

First, I installed mod_perl: Installing Mod_Perl.

Then, I used cpan to install Embed Perl. I ran "perl -MCPAN -e shell" and at the prompt typed "install Embperl". This prompted me for some dependencies, I had to do "install LWP" and then try "install Embperl" again. Eventually it worked.

I added these lines to the section for my virtual host in /etc/httpd/extra/httpd-vhost.conf (they could also be added in the main httpd.conf to apply to the whole server if desired):

#    PerlModule HTML::Embperl
    PerlModule Embperl
    <Directory /home/rgr/public_html/embperl>
        SetHandler perl-script
        Options ExecCGI
#       PerlHandler HTML::Embperl::handler
        PerlHandler Embperl::handler

Note the parts that are commented out -- whose were in an online example I found, but they resulted in the "500 internal server error" message. I could see the detailed message in the apache error log, and perl was looking for HTML/Embperl.pm when it should have been looking for Embperl.pm.

After that I set up an example file (see the tutorial below) and successfully tested it.

Tutorial on Use


Here is an example file I created in /home/rgr/public_html/embperl/test.pl (it actually should be in which ever directory you set to be handled via embperl in the httpd.conf file or httpd-vhosts.conf file):

First line.<br>
[- $a = 5 -] Some stuff! [- $b = 6 if ($a == 5) -]<br>
Now for some output:<br>
[+ $a +]  [+ $array[$b] +] [+ "A is $a" +]

And here is the output of http://localhost/embperl/test.html:

First line.
Some stuff!
Now for some output:
5 A is 5

Note that the code with [- -] is just run. The code with [+ +] is run, and the results are used to replace that part of the html file. You can also use [!  !] which is for code that should only be run once, such as function definitions. The perldoc documentation or the apache page linked above has more complete explanations and tutorials: http://perl.apache.org/embperl/