2011年03月19日

Mac

Macでの開発


posted by tekniq at 17:49 | 未分類

クラウド

クラウドの話題


posted by tekniq at 17:48 | 未分類

HTML/css/php/perl/javascript

HTML,css,cgi 等 web開発のこと


posted by tekniq at 17:48 | 未分類

php から perl コードを呼び出す

php から、Perl のコードを呼び出す方法。(CentOS5 での方法)

必要なもの

  • php
  • perl
  • pear (php 拡張)
  • pecl (php 拡張)
  • phpize
  • perlインタプリタ

インストール

php, perl は、すでにインストールされているものとする。
pear, pecl, phpize インストール
# yum -y install php-pear
# yum -y install php-pecl
# yum -y install phpize
これでインストールできるが、php5 を utterramblings からインストールした場合は、バージョンの不整合で、インストールに失敗する。
この場合は、リポジトリを指定して
# yum install --enablerepo=utterramblings php-pear
# yum install --enablerepo=utterramblings php-pecl
# yum install --enablerepo=utterramblings phpize
で、インストールする。
perl インタプリタの インストール
# pecl install perl
で、インストールできるようだが、失敗例も多い。
install
ここでは、下記のように、ソースからインストールする。
# wget http://pecl.php.net/get/perl-1.0.0.tgz
# tar zxvf perl-1.0.0.tgz
# cd perl-1.0.0
# phpize
# ./configure
# make
# make install
設定ファイル(/etc/php.ini) を書き換える
/etc/php.ini の適当な場所に、以下を追加する。
ディレクトリ名は、各自の環境に合わせて欲しい(perl.so のある場所)
extension_dir=/usr/lib/php/modules
extension=perl.so
httpd 再起動
# service httpd restart
これで、php から perlコードを利用する環境が整った。

実行テスト

perl コード
use strict;
sub foo {
  return "this is perl.";
}
1;
のような、コードを、test.pl として作成。
グローバルスコープでないと、うまく呼び出せないので、パッケージの際などは、注意が必要。
package plugin::test;
use strict;

# foopkg() は、グローバルでないので、呼び出せない
sub foopkg()
{
  return "this is package.";
}

# foo() は、グローバルなので、呼び出せる
sub ::foo()
{
  return "this is perl.";
}
php コード
  $pl = new Perl();
  $pl->require("test.pl");     // perl ソースの読み込み
  $ret = $pl->foo();             // test.pl の foo() を実行
と、至って簡単に呼び出すことができる。
もちろん、引数も、渡すことができる。


posted by tekniq at 17:35 | Comment(0) | TrackBack(0) | HTML/css/php/perl/javascript