ダウンロード ソースコードのダウンロード (5.5 KB)
PHPからPerlスクリプトを呼び出す
PHPからPerlスクリプトを実行するには、shell_exec関数を利用します。この関数のプロトタイプは次のとおりです。
string shell_exec ( string $cmd )
shell_exec関数はコマンドシェルを使ってコマンドを実行し、その結果を文字列で返します。$cmdパラメータは、実行するコマンドを表します。
PHPがセーフモードで動作しているときは、shell_exec関数が無効になっています。
PHPからPerlスクリプトを呼び出すサンプルコードを以下に示します。ここで呼び出しているPerlスクリプトは、上で作成したサンプル「test.pl」です。このPerlスクリプトを呼び出すPHPアプリケーションは「test.php」です。なお、本稿で紹介するすべてのサンプルスクリプトは、記事先頭のリンクからダウンロードできます。
<?php
$result=shell_exec("C:\Perl\bin\perl.exe test.pl");
echo($result);
?>
このファイルを「test.php」という名前で保存し、それをブラウザで開くと、「Hello from ActivePerl!」というメッセージが表示されます。
スクリプトにデータを渡し、その結果を取得したいという場合も多いでしょう。次に示すPHPスクリプト(values.php)は、2つの整数(144、22)と1つの浮動小数点数(34.3445)をPerlスクリプトに渡します。Perlスクリプトは、これらの値を用いて数学的計算(合計、平均、平方根など)を実行し、結果を出力します。
<?php $result=shell_exec( "C:\Perl\bin\perl.exe values.pl 144 22 34.3445"); echo($result); ?>
上記のコードは、計算処理を実行するPerlスクリプト(values.pl)を呼び出します。このスクリプトのコードを以下に示します。
# Parameters sent by the PHP script $a=$ARGV[0]; $b=$ARGV[1]; $c=$ARGV[2]; print "The three parameters passed by the PHP script are: "; print $a." --- ".$b." --- ".$c."<br />"; #Exercise some of the Perl math functions #using the three parameters $a,$b,$c print "sum(a+b) ="; print $a+$b."<br />"; print "product(a*b) = "; print $a*$b."<br />"; print "average(a,b,c) = "; print (($a+$b+$c)/3); print "<br />"; print "sqrt(a) = "; print sqrt($a)."<br />"; print "int(c) = "; print int($c)."<br />"; print "log(a) = "; print log($a)."<br />"; 出力結果 The three parameters passed by the PHP script are: 144 --- 22 --- 34.3445 sum(a+b) =166 product(a*b) = 3168 average(a,b,c) = 66.7815 sqrt(a) = 12 int(c) = 34 log(a) = 4.969813299576
PHPからPerlスクリプトに対しては、引数を何個でも渡すことができます。Perl側ではこれらの引数を$ARGV[0]、$ARGV[1]・・・$ARGV[n]のようなポジショナル引数を使った形式で取り出します。上記の例では、この方法で$a、$b、$cに値を割り当てました。つまり、$ARGV[0]=144、$ARGV[1]=22、$ARGV[2]=34.3445となります。
この簡単な計算サンプルスクリプトにも、Perlスクリプトを使って出力を整形する処理が含まれています。この例ではHTMLの改行タグ(<br />)を生成しているだけですが、Perlスクリプトを使って、さらに複雑な出力フォーマットを生成することもできます。
PHP、HTML、Perl
次に紹介するアプリケーションは、PHPから呼び出されるPerlスクリプトを使って簡単なHTMLドキュメントを生成します。このHTMLコードを生成するのに使用するPHPスクリプト(perlPHP.php)とPerlスクリプト(perlHTML.pl)を以下に示します。
<?php
$result=shell_exec("C:\Perl\bin\perl.exe perlHTML.pl");
echo($result);
?>
# perlHTML.plのリスト # output some html code print "<html>"; print "<head><title>Perl -HTML</title></head>"; print "<body>"; print "<h4>This page comes from Perl </h4>"; print "Hello Everybody!"; print "</body>"; print "</html>";
この出力は、以下に示すように、2本の罫線の間の整形されたテキストとしてブラウザに表示されます。
この記事は参考になりましたか?
- japan.internet.com翻訳記事連載記事一覧
- この記事の著者
-
japan.internet.com(ジャパンインターネットコム)
japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
Octavia Andreea Anghel(Octavia Andreea Anghel)
経験豊富なPHP開発者。現在は、国内外のソフトウェア開発コンテストに参加するプログラミングチームの主任トレーナーを務める。国レベルの教育プロジェクト開発のコンサルティングも担当している。共著書に『XML technologies?XML in Java』があり、XML部分の執筆を担当。PHPやXML...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

