我正在尝试为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但我想尽可能远离外部模块。
任何人都有这方面的想法吗?
答案 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”。