ActivePerl

Why doesn't the PPM website work?

Question: 

I'm trying to browse the PPM website. Why am I getting an Internal Server Error?

Answer: 

The PPM server has two interfaces. The first is a SOAP interface that is used by the PPM client, at this url:

http://ppm.activestate.com/cgibin/PPM/ppmserver.pl?urn:/PPMServer

The second is a regular web interface for your browser. The SOAP interface uses the URL shown above and will give an error if you try to access it using a browser. The URL for the regular web interface is:

http://ppm.activestate.com/

What is the ECCN for ActivePerl?

Question: 

What is the Export Control Classification Number for ActivePerl?

Answer: 

The Export Control Classification Number for ActivePerl is EAR99 (self-classified). For a brief description of EAR99 and information on the difference between EAR99 and NLR (No License Required), see:

http://www.census.gov/foreign-trade/faq/reg/reg0031.html

Bioperl on ActivePerl

Question: 

How do I make Bioperl work with ActivePerl?

Answer: 

There is an extensive set of Perl modules available for bioinformatics, and bioperl is probably the best collection around. However, we don't have the latest version in our PPM repository, because it is difficult to build automatically.

However, the bioperl folks have come to the rescue, and have detailed instructions on how to use their PPM repository to install the latest version. Good on them! If you need bioperl, just look there and set yourself up -- it makes updating a snap.

Perl's magic sort variables: $a and $b

Question: 

When I call my variables $a or $b they don't do what I expect. What's up?

Answer: 

Here's an often-used, but little-remembered fact about Perl that has caused some confusion on more than one occasion: $a and $b are special.

They are (among other things) used in custom sort blocks, but unfortunately the Perl documentation uses them in many examples. I say that it is unfortunate because the use strict pragma seems to ignore these two variables. If you do the following:

use strict;

$a = "foo";
$b = "bar";
$c = "baz";
$d = "quux";

You will see that only $c and $d are flagged as errors.

My advice is to avoid using $a and $b except for custom sort blocks and other places that require their use.

Double-clicking perl scripts -- console window dissapears immediately.

Question: 

When I double-click my perl program, the console window disappears before I can see the output.

Answer: 

If you just double-click on the program file in Windows, the console window it opens for output will close as soon as the script finishes. It is best to run Perl scripts directly from the command-line.

For example, open a console window (DOS prompt) and execute this command:

  perl C:\perl\eg\example.pl

The console window will stay open allowing you to see the output:

  Hello from ActivePerl!

If you're interested in a development environment that allows you to execute scripts in a GUI, check out Komodo:

http://activestate.com/Products/Komodo/

New to Perl on Windows. New to programming.

Question: 

I've installed ActivePerl. What now?

Answer: 

Go to Start | Run. Enter 'CMD' in the Open field and press Enter. This will open up a DOS command prompt. At the prompt, type:

  C:\>perl -v

You should see version information for ActivePerl.

To evaluate perl code on the command line, you can do this:

  C:\>perl -e "print \"hello world\";"

Note: you must escape double quotes in the code when using -e.

To run a script:

  C:\>perl scriptname.pl

Perl.org maintains the defacto standard resources for Perl developers:

http://learn.perl.org/library/beginning_perl/

What *not* to do:

"PerlScript" is not the same as "Perl script". "PerlScript" is a special version of ActivePerl for certain uses inside IIS servers. If you encounter references to "PerlScript" in the manuals, you can skip them until after you have mastered IIS setup.

PPM is not a Perl Editor. Skip PPM for now, and come back to it when you find you need to add additional features to ActivePerl.

OLE Browser is not a Perl Editor. OLE Browser was just an example of how to do something that isn't a good idea with today's internet. If your version of ActivePerl still has the icon for OLE Browser, you can ignore it and come back to it much, much later.

If you *are* looking for an editor / development environment for Perl, you should try ActiveState's Komodo:

http://activestate.com/Products/Komodo/

No sendmail on Windows -- use Mail::Sender

Question: 

My perl program uses sendmail. How do I run it on a Windows system?

Answer: 

Sendmail is a mail transfer agent used on many UNIX systems. Perl programs (such as FormMail by Matthew Wright) often use it as a pipe for sending messages. Sendmail is not part of ActivePerl, and isn't typically installed on Windows.

The best approach to use when writing Perl scripts that need to send email and also need to work on both UNIX and Windows systems is to use the Mail::Sender modules instead as this is available on Windows and UNIX. You can install Mail::Sender by running:

  ppm install mail-sender

...at a command prompt. Documentation for using Mail::Sender is available here:

http://search.cpan.org/~jenda/Mail-Sender-0.8.16/Sender.pm

Map CGI Extension in IIS

Question: 

How do I get IIS to use ActivePerl for my CGI scripts?

Answer: 

During installation, ActivePerl creates script mappings in IIS for the .pl and .plx extensions but not the .cgi extension. To support the .cgi file extension, you will need to replicate the .pl extension settings.

  1. Go to Control Panel | Administrative Tools
  2. Open Internet Information Services
  3. Right-click the Default web site and select Properties.
  4. In the Properties dialog-box select the 'home Directory' tab.
  5. Click on the configuration button in the Application Configuration dialog.
  6. Click on the 'Add' button.

In the Add/Edit dialog-box, ensure the following settings are correct:

  • for executable, put in C:\Perl\bin\perl.exe "%s" %s ( adjust this if you have installed Perl elsewere)
  • for the extension, enter 'cgi'
  • for Verbs, select 'Limit to:' and put in 'GET,HEAD,POST'
  • select 'Script Engine' and 'Check that file exists'

Click OK to close all of the open dialog-boxes. You should now be able to place the cgi files you want to run into the wwwroot folder (usually c:\inetpub\wwwroot\), or create a virtual web directory in IIS to the location of your cgi files.

Manual Uninstall of ActivePerl

Question: 

How do I manually uninstall ActivePerl (on Windows)?

Answer: 

To remove ActivePerl manually, delete the \Perl\ directory (including all sub-directories) and the following registry entries:

  1. HKEY_LOCAL_MACHINE/Software/ActiveState/ActivePerl
  2. HKEY_LOCAL_MACHINE/Software/ActiveState/PerlScript
  3. HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/
    Uninstall/ActivePerl

InstMSIW.exe is NOT the perl installer

Question: 

I've run InstMSIW.exe, but ActivePerl doesn't seem to be installed.
What's wrong?

Answer: 

InstMsiW.exe and InstMsiA.exe are patches for older versions of Windows to allow them to use our MSI installers. People often mistake this download for the ActivePerl installer itself, which can be found on the left-hand side of the download page:

http://www.activestate.com/activeperl/downloads

Select the link under 'Windows' for the MSI installer.