将php.inc文件导入PERL程序

时间:2012-07-20 16:37:04

标签: php linux perl

我正在尝试为perl和php使用1个包含文件

有一种很好的方法可以在perl中导入myphp.inc文件吗?

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

在我的test.php中使用上面的工作正常:

include "myphp.inc";

如果我删除&lt; ? php然后test.php将打印出myphp.inc文件的内容...如果我留下它们,那么我的perl程序抱怨:

Unterminated <> operator

我见过perl模块:PHP :: Include但我想尽可能远离外部模块。

任何人都有这方面的想法吗?

2 个答案:

答案 0 :(得分:9)

不要尝试编写PHP和Perl的代码,它们是不同的语言,即使它们有一些共享的祖先。如果要在两者之间共享数据,请使用结构化数据格式。 JSON是一种流行的味道。 PHP有parse_json,Perl有JSON模块。

  

如果可能,我想远离外部模块

代码重用是一种美德......虽然没有什么可以阻止你从头开始重新实现这些模块。

答案 1 :(得分:1)

理想情况下,您将以PHP和Perl中易于阅读的格式存储共享/配置数据。 XML,JSON或带有键值对的简单文本文件(如simbab所建议的.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”。