Я пытаюсь выполнить скрипт Perl из скрипта python, но похоже, что он не был выполнен! используя эту команду в 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' в качестве читаемого файла. и когда я запускаю команду ls в оболочке, в каталоге нет файла dumpered_hash.
Спасибо вам.
Ваш скрипт 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;
...
require
и do
эквивалентны для этой цели.