Хэш % ENV в Perl содержит переменные среды, такие как PATH, USER и т. Д. Любые изменения этих переменных отражаются «только» в текущем процессе и любом дочернем процессе, который он может порождать. Родительский процесс (который в данном конкретном случае является оболочкой) не отражает эти изменения, поэтому при завершении сценария 'param_send.pl' все изменения теряются.
Например, если бы вы делали что-то вроде
#!/usr/bin/perl
# param_send.pl
$ENV{'VAL'} = "Value to send to param_recv";
#!/usr/bin/perl
# param_recv.pl
print $ENV{'VAL'};
Это не сработает, поскольку VAL теряется при выходе из param_send. Одним из обходных путей является вызов param_recv.pl из param_send.pl и передача значения в качестве переменной среды или аргумента
#!/usr/bin/perl
# param_send.pl
$ENV{'VAL'} = "Value to send to param_recv";
system("perl param_recv.pl");
OR
#!/usr/bin/perl
# param_send.pl
system("perl param_recv.pl 'VAL'");
Другие опции включают в себя конвейеризацию вывода, или вы можете проверить этот PM-узел для более эзотерического решения.