プロが教える店舗&オフィスのセキュリティ対策術

perlのプログラムから同一サーバー内のphpを実行してその結果を取得したいのですが、うまくいきません。

print.phpというファイルの中身が
<?
echo "<div>1234567890</div>";
?>
だとして、これをブラウザで見た場合のソースは
<div>1234567890</div>
となるわけで、この1234567890をperlのプログラム内で表示するために

main.cgiというプログラム内で
$data = '/***/www/print.php';
open(FH,$data);
@list = <FH>;
foreach $data_line ( @list ) {
if ($data_line =~/<div>/ ){
$data_line =~ s/<div>//i;
$data_line =~ s/<\/div>//i;
print = $data_line;
}
}
close(FH);
のような処理をすると
echo "1234567890";
という実行前のphpの中身が表示されてしまいます。

表示したい結果はこの場合ブラウザでphpを実行した時のソースからdivタグをperl側で抜き取った
1234567890
なのですが、同じ事をperlの書き換えで実現する上手い方法があればご教授いただけますと助かります。

A 回答 (4件)

php print.php


みたいな形で呼んで結果を取り込んだらだめなのかな?パイプとか。
systemだかexecだかで呼ぶんじゃなかったっけ?

この回答への補足

>php print.php
>みたいな形で呼んで結果を取り込んだらだめなのかな?パイプとか。

perlに「php」という命令があるということですか?
検索したのですが、ちょっとうまくひっかけることができなかったので
もう少しつっこんだ感じでお伺いできますでしょうか。
要するにperlで結果を取り込んでその後divを置換で消すとか、単純な処理を考えています。
phpはあくまでサブルーチン的に別処理の結果を吐き出すためだけに使用しています。

>systemだかexecだかで呼ぶんじゃなかったっけ?

これを使うとどういう形で返ってくるのか、自分の知識ではいまいち心元ないです。実行させるのはいいとして、結果の受け取りにまた手続きがいるというか、何か変数を用意すればそれに入ってくれるのかなど、です。
元のプログラムにもあるように1行ずつ変数に入れて、必要な部分だけ抜き取って加工してprintで表示させたい思惑です。

補足日時:2006/11/07 00:37
    • good
    • 0

>perlに「php」という命令があるということですか?


・・・・・
こういう形と同じ事を言ってるんだけど・・・
 system "ls -1"

サーバ側にcli版phpが無いとできない
 system "php print.php"
    • good
    • 0

>$data = '/***/​www/print.php';​


>open(FH,$data);

これだと、PHPの実行結果ではなくて、もろ、print.phpを開いています。
なので、www/print.phpをPHPで実行した処理結果で、置換処理等を行わないといけないです。

○PHPをコマンドラインから実行
http://phpspot.net/php/man/php/features.commandl …
http://www.spencernetwork.org/memo/tips-6.php

○Perlのファイル操作http://www.ipc.hokusei.ac.jp/~z00104/perl/fileha …

あたりを参考にして、
$PHP = '!/usr/bin/php'; #PHPのパス
$PHP_FILE='/***/​www/print.php';​#実行するPHP
open FH, "$PHP -q $PHP_FILE|";
@list = <FH>;
close FH;

ってな具合でいけるのではないかと、思います。
PHPはないので、未確認ですが。

あと検索は、「php コマンドライン」や「perl パイプ」あたりでしてみてはいかがでしょうか。
    • good
    • 0
この回答へのお礼

四苦八苦し解決まで時間を要しましたが、教えていただいた資料が大変参考になりました。
大変ありがとうございました!!

お礼日時:2006/11/18 22:26

NO3、ちょっと間違いがあります。


$PHP = '!/usr/bin/php'; #PHPのパス
びっくりマークはいらないですね。
$PHP = '/usr/bin/php'; #PHPのパス
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!