LINUX.ORG.RU

Выполнить кусок кода на BASH внутри Perl-программы?

 ,


0

1

Проблема в том, что Perl использует почему-то sh, а как указать на необходимость использования другой оболочки - непонятно.
Нужно выполнить вот такой код:

$ENV{"PERL5SHELL"}="bash"
system("source ~grib/bin/grib-scriptset/point_forecast_hashes_extended.def; source /opt/scripts/functions/perl.inc; PerlDcl_Hash LBL2MP");

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

Ответ на: комментарий от anonymous

Да, примерно так, вот как советуют на StackOverflow:

system('bash','-c','... BASH_COMMANDS_HERE ...');
Это работает, но непонятно только, как подобрать вывод в STDOUT из system?

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

Вот так работает отлично!

$ perl -e 'eval `bash -c "source ~grib/bin/grib-scriptset/point_forecast_hashes_extended.def; source /opt/scripts/functions/perl.inc; PerlDcl_Hash LBL2MP"`; print $LBL2MP{"U700"}."\n";'
UGRD-700_mb

DRVTiny ★★★★★
() автор топика
1 марта 2014 г.
Ответ на: комментарий от DRVTiny

как подобрать вывод в STDOUT

open(OUT, "bash -c date |");
print <OUT>;
arson ★★★★★
()
Последнее исправление: arson (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.