在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/&lt;/</g;

    $contents =~ s/&gt;/>/g;

    $contents =~ s/\\&quot;/\"/g;

    $contents =~ s/&cent;/¢/g;
    $contents =~ s/&pound;/£/g;
    $contents =~ s/&yen;/¥/g;
    $contents =~ s/&euro;/€/g;
    $contents =~ s/&copy;/©/g;
    $contents =~ s/&reg;/®/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("$", "&dollar;", $cont);    //replaces $ with &dollar;

    $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,\&amp;quot;/usr/local/dpdregister/processes/common/\&amp;quot;;}
eval {require ''dpdregister.conf''; use vars qw ( &dollar;dbh ) };

=history
&amp;lt;HIST&amp;gt;
history2 &amp;aacute;&amp;eacute;\x{00c5}\x{00b1}&amp;aacute;&amp;eacute;
t&amp;ouml;bb history

&amp;lt;/HIST&amp;gt;
=cut