Up: Strategies for using scripts

Using Maple and Mathematica

Set the Path

Perl scripts can start other programs, send commands to them, and retrieve their output.

When a CGI script runs, it behaves as a separate user, the http daemon. Consequently, it inherents a user envrionment. Typically, this environment is minimal, containing almost no path information, for example. Thus, if you are going to run other software, you must add the path to the script's environment:

$ENV{PATH} .= ":/usr/local/bin:/u/share/bin";
The ".=" operator appends the string to the existing path. The associative array %ENV contains the scripts environment variables.

Talking to Maple and Mathematica

The following example illustrates how to send commands, and retrieve calculations and graphics.

#! /usr/bin/perl

$ENV{PATH} .=":/usr/local/bin:/u/share/bin";

#get the current process number

$pid = $$;

#open a connection to Maple

$maple = "| maple -q  > maple.$pid";
$maplegif = "maplegif.$pid";
open(MAPLE, $maple) || print STDERR "Maple can't be opened!\n";

#Send commands via print

print MAPLE "print(2 + 3); \n";
print MAPLE
"interface(plotdevice=gif,plotoutput=`$maplegif`,plotoptions=`width=500,height=300`);\n";
print MAPLE
"plot(x^2, x=-2..2);";
print MAPLE "quit;\n";
close(MAPLE);

#Set up some unique file names

$math_in = "math_in.$pid";
$math_out = "math_out.$pid";
$math_ps = "math_ps.$pid";
$math_gif = "math_gif.$pid";

#Construct a batch input file

open(MATH, "> $math_in") || print STDERR "Math can't be opened!\n";
print MATH "4 + 5\n";
print MATH "Display[\"$math_ps\",Plot[x^2, {x,-2,2},DisplayFunction->Identity]];\n";
print MATH "Quit \n";
close(MATH);

#process the file, convert the PS output

system("math -batchinput -batchoutput <$MATH_IN > $math_out");
system("psfix $math_ps | convert - $math_gif");
Another strategy for interacting with external programs is sending messages via a client-side helper applet. One implementation of this idea is the Hamlet project at the University of Utah. Further examples of web pages using this strategy can be found at the UCES web site at Ames National Laboratory.


Up: Strategies for using scripts

[HOME] The Geometry Center Home Page

Comments to: webmaster@www.geom.uiuc.edu
Created: May 09 1996 --- Last modified: Tue Jun 4 22:12:50 1996