[sf-perl] perl on a mac

Lara Ortiz de Montellano lara.ortiz.de.montellano at comcast.net
Mon Nov 17 14:21:27 PST 2008


1. Re: perl on a mac (Walt Sanders)

>Terminal won't run it of course, it just spits that code back at me.   
>But, if I try to run it in a browser, of try to preview it in an  
>editor, it still spits code back at me.  This is any program that runs  
>perfectly fine when I upload it to any one of my ISP servers.  I can  
>just download any working .cgi or .pl from one of my websites and it  
>won't run on my machine.
>  
>

To expand a bit on Darin's instructions in a Mac specific context (and 
this is going to be long and possibly something you already know)...

It sounds like you're seeing the correct, but raw HTML when you expect 
to see interpreted HTML if you run the code on the command line, and raw 
perl code if you open it in the browser?

If so, the deal is that the terminal/command line executes the Perl but 
does not render HTML.   This is correct and expected behaviour.   You 
should see the same thing if you run the script on Windows under
    Start->
        Run->
            cmd [OK]
            c:> perl c:\some\path\to\your\script.pl

Opening the perl script directly in the browser will get you the raw 
Perl code because the browser itself cannot execute the Perl code, it 
only understands the HTML (and figures anything else is plain text).

So... you need to execute the Perl by having your browser ask a web 
server to execute the script and return the (HTML) contents to the browser.

To do this:

1) Configure your web server to allow CGI scripts:

a) In Terminal, use the whoami command to see what the Mac thinks your 
user id is.

b) Under /etc/httpd/users (under 10.4) or /etc/apache2/users/ (10.5) 
create a file called username.conf where "username" is your userid name 
on the mac.

c) In the /etc/apache2/users/username.conf file, add the text:

<Directory "/Users/username/Sites/">
    AllowOverride All
</Directory>

d) Create the file /Users/username/Sites/.htaccess

set the permissions on the file:

sudo chgrp www .htaccess
chmod 750 .htaccess

and in the file, add the text:

AddHandler cgi-script .pl
Options ExecCGI

e) Under the apple menu, choose System Preferences and click on Sharing, 
then turn off (by unticking) Personal Web Sharing, then turn it back on 
(by ticking Personal Web Sharing).

2) Set your script up to be accessible to the web server

a) In Terminal, run     which perl     to see which Perl you're using, 
and make a note of the path (usually /usr/bin/perl)

b) Add a shebang line to your perl script to tell the web server how to 
execute your script, using the path  you got in 2a:

#!/usr/bin/perl

c) copy or move your file to /Users/username/Sties/scriptname.pl

d) Set the file permissions to allow world execute on the script:

chmod a+x /Users/username/Sites/scriptname.pl

3) View the file in your browser at

http://localhost/~username/scriptname.pl

Do you see what you were expecting? 

If so, you'll want to read up a bit on Apache  CGI  and you may also 
want to tweak the Apache and script file permissions to make it a little 
more secure.

-Lara O.



More information about the SanFrancisco-pm mailing list