1

perlとphpの両方に1つのインクルードファイルを使用しようとしています

perl 内に myphp.inc ファイルをインポートする良い方法はありますか?

$ cat myphp.inc
<?php
    $some_var="hello world";
?>

私のtest.phpで上記を使用するとうまくいきます:

include "myphp.inc";

< を削除すると ? php の場合、test.php は myphp.inc ファイルの内容を出力するだけです...それらをそのままにしておくと、私の perl プログラムは次のように文句を言います:

Unterminated <> operator

perl モジュールを見てきました: PHP::Include ですが、可能であれば外部モジュールから離れたいと思います。

誰でもこれを行うアイデアがありますか??

4

2 に答える 2

9

PHP と Perl の両方であるコードを作成しようとしないでください。たとえ共通の祖先があったとしても、それらは異なる言語です。2 つの間でデータを共有する場合は、構造化データ形式を使用します。JSONは人気のあるフレーバーです。PHP にはparse_jsonがあり、Perl にはJSONモジュールがあります。

できれば外部モジュールは避けたい

コードの再利用は美徳ですが、モジュールをゼロから再実装することを止めるものは何もありません。

于 2012-07-20T16:43:32.100 に答える
1

理想的には、PHP と Perl の両方で簡単に読み取り可能な形式で共有/構成データを保存します。XML、JSON、またはキーと値のペアを含む単純なテキスト ファイル (simbabque が提案する .ini ファイルのように) はうまく機能します。

Perl で PHP ファイルを読むことに決めたが、PHP::Include などのモジュールを使用したくない場合は、次のような記述が残されます。

use IO::File;

sub require_php {
        my $source_filename = $_[0];
        my $dest_filename = 'temp.inc.pl';
        open my $source, $source_filename or die "Could not open $source_filename: $!";
        open my $destination, '>>'.$dest_filename or die "Cound not open file for writing";
        while(my $line = <$source>) {
                if(index($line,'<?php')==-1 && index($line,'?>')==-1) {
                        print $destination $line
                }
        }
        close $destination;
        close $source;
        require $dest_filename;
        unlink $dest_filename;
}

our $some_var = '';
require_php('myphp.inc');

$some_varこれは、「hello world」の値を持つことで終わります。

于 2012-07-21T00:30:39.740 に答える