在Linux上从PHP向Perl发送参数
我正在尝试使用在Linux上从PHP向Perl发送参数,php,perl,encoding,shell-exec,Php,Perl,Encoding,Shell Exec,我正在尝试使用shell\u exec()在远程(当前为虚拟)Linux服务器上运行Perl脚本。Perl文件需要3个参数:文件名、编码和文件内容 它是用来将特定的行写入其他人制作的Perl文件的 脚本应使用arg[0]中的文件名和arg[1]中的编码打开文件,并将arg[2]中的内容写入其中 我设法让它工作,因为它会将内容写入文件,但由于这个程序会在编码很重要的文件上写入内容,因此我必须使用与原始编码相同的编码来写入内容,而且由于我们使用重音字符,我需要确保这些字符也能正常工作。我怎么能这么做
shell\u exec()
在远程(当前为虚拟)Linux服务器上运行Perl脚本。Perl文件需要3个参数:文件名、编码和文件内容
它是用来将特定的行写入其他人制作的Perl文件的
脚本应使用arg[0]
中的文件名和arg[1]
中的编码打开文件,并将arg[2]
中的内容写入其中
我设法让它工作,因为它会将内容写入文件,但由于这个程序会在编码很重要的文件上写入内容,因此我必须使用与原始编码相同的编码来写入内容,而且由于我们使用重音字符,我需要确保这些字符也能正常工作。我怎么能这么做
如果需要,我将添加代码
编辑:代码:
Perl:
例如: 文件内容:(Perl文件)
将所有内容都写成UTF-8不是更容易吗
它需要将所有这些Perl文件一次性转换为UTF-8(如果需要,也可以用Perl进行转换;只是不要忘记设置
使用utf8;
pragma),但是在这之后,您只需要检查发送到文件的内容实际上是UTF-8。最好添加代码,人们很容易理解你想要达到的目标。是的,我想是的。我会找出我需要添加的代码遗憾的是,我正在处理一家跨国公司的文件,我们这里的代码已经足够旧了,我们不敢碰它,因为很多情况下可能取决于它们是否正常工作。这是一个附带项目,它将从这些脚本收集数据并将信息作为注释写入其中,但我无法更改这些脚本的工作方式或其中已有的任何注释。
#!/usr/bin/perl -w
use warnings;
#use strict;
my $fileName = "";
my $contents = "";
my $encoding = "";
if(@ARGV != 3){
print "use: documentor_write_file fileName encoding contents";
exit;
}else{
$fileName = $ARGV[0];
$encoding = $ARGV[1];
$contents = $ARGV[2];
}
sub write_file{
open(DATA,"> :encoding($encoding)",$fileName);
$contents =~ s/&/&/g;
$contents =~ s/$/$/g;
$contents =~ s/</</g;
$contents =~ s/>/>/g;
$contents =~ s/\\"/\"/g;
$contents =~ s/¢/¢/g;
$contents =~ s/£/£/g;
$contents =~ s/¥/¥/g;
$contents =~ s/€/€/g;
$contents =~ s/©/©/g;
$contents =~ s/®/®/g;
print(DATA);
print DATA $contents;
}
write_file;
close(DATA);
exit;
if(isset($_GET['stf'])){
$ret = "";
$fn = $_POST['fn']; //File name
$enc = $_POST['enc']; //Encoding
$cont = $_POST['content']; //Content
$cont = str_replace("\"","\\\"", $cont); //Replaces " with \"
$cont = pg_escape_string($cont); //
$cont = htmlspecialchars(htmlentities($cont)); //
$cont = str_replace("$", "$", $cont); //replaces $ with $
$cmd2 = "perl /documentor_write_file.pl $fn $enc " . "\"" . $cont . "\"";
$ret = shell_exec($cmd2);
//print($ret . " - " . $cmd2);
}
#!/usr/bin/perl -w
BEGIN{push @INC,"/usr/local/dpdregister/processes/common/";}
eval {require 'dpdregister.conf'; use vars qw ( $dbh ) };
=history
<HIST>
history2 áéűáé
több history
</HIST>
=cut
#!/usr/bin/perl -w
BEGIN{push @INC,\&quot;/usr/local/dpdregister/processes/common/\&quot;;}
eval {require ''dpdregister.conf''; use vars qw ( $dbh ) };
=history
&lt;HIST&gt;
history2 &aacute;&eacute;\x{00c5}\x{00b1}&aacute;&eacute;
t&ouml;bb history
&lt;/HIST&gt;
=cut