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 的代码,它们是不同的语言,即使它们有一些共同的祖先。如果要在两者之间共享数据,请使用结构化数据格式。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 回答