Лучший способ - выполнить скрипт python на системном уровне, используя IPC :: Open3.Это сделает вещи более безопасными и удобочитаемыми в вашем коде, чем использование system ();
Вы можете легко выполнять системные команды, читать и записывать их с помощью IPC :: Open3, например:
use strict;
use IPC::Open3 ();
use IO::Handle (); #not required but good for portabilty
my $write_handle = IO::Handle->new();
my $read_handle = IO::Handle->new();
my $pid = IPC::Open3::open3($write_handle, $read_handle, '>&STDERR', $python_binary. ' ' . $python_file_path);
if(!$pid){ function_that_records_errors("Error"); }
#read multi-line data from process:
local $/;
my $read_data = readline($read_handle);
#write to python process
print $write_handle 'Something to write to python process';
waitpid($pid, 0); #wait for child process to close before continuing
Это создаст раздвоенный процесс для запуска кода Python.Это означает, что в случае сбоя кода Python вы можете восстановить и продолжить работу с вашей программой.