我正在尝试从python脚本执行Perl脚本,但似乎它还没有被执行! 在python中使用此命令:
os.popen('dump_hash.pl {}'.format(scn_filepath))
这是dump_hash.pl脚本:
$path = <STDIN>;
require "$path";
open (OUTFILE, "+>dumpered_hash");
print OUTFILE Dumper("\%...");
close (OUTFILE);
并且在尝试打开“dumpered_hash”时脚本卡住了作为可读文件。当我在shell中运行ls命令时,该目录没有dumpered_hash文件。
谢谢你。
答案 0 :(得分:3)
您的Perl脚本错误:
"foo\n"
而不是"foo"
。Data::Dumper
模块。您确定要将$path
的文件作为Perl代码执行吗?
清理后,我将Perl脚本编写为
perl -MData::Dumper \
-do $ARGV[0];' \
-e'print Dumper \%some_global' \
input-file.pl >output
或作为
use strict; use warnings;
use Data::Dumper
do $ARGV[0];
open my $fh, ">", "output" or die "Can't open output: $!";
print { $fh } Dumper \%some_global;
如果你真的想要STDIN的文件名:
use strict; use warnings;
use Data::Dumper;
chomp(my $path = <STDIN>);
do $path;
...