過去に開発したPerl言語によるスクリプト(いわゆるCGI)をPHP化する必要に迫られ、とはいえ一部のサブルーチンはPerlで実行したかったので、以下メモを残します。
まずは実行したいPerl(sample.cgi)を用意する。
引数が「(大文字)ABC」ならば「OK」それ以外ならば「NG」を変数 $result に入れて読み込み元のPHPに返すという内容です。
#!/usr/bin/perl
if($ARGV[0] eq 'ABC'){
$result = 'OK';
} else {
$result = 'NG';
}
print $result;
exit;
続いてCGIを読み込むPHPを用意します。
<?php
$result = exec('/usr/bin/perl sample.cgi abc');
echo $result;
?>
※ 上記PHP(sample.php)とCGI(sample.cgi)は同じ階層にあり、Perlまでのパスは #!/usr/bin/perl の場合を想定しています。
※ 上記PHP内の引数は「abc」なので結果は「NG」が返されます。この「abc」を「ABC」に変更すると「OK」が返されます。
※ 引数が複数ある場合はabcに半角空白区切で続けます
例) 「abc」と「def」と「ghi」がある場合
sample.cgi abc def ghiのようにします