/ / Отримання значень з однорядного скрипту Perl - perl, shell, windows-shell

Отримання значення з однорядкового Perl-скрипта - perl, shell, windows-shell

Я намагаюся проаналізувати вихідний файл для деяких даних, і у мене виникають проблеми із поверненням значення до моєї оболонки Windows.

Що я намагаюся зробити, це просто повернути значення, використовуючи простий регулярний вираз, і зберегти його в моїй змінній оболонки.

У мене зараз щось подібне:

%VAL% = %PERL% -e "$tmp="Value: 1000"; if ($tmp =~ /Value:s(d+)/) { print $1; }"

де %VAL% саме там я хотів би повернути те, що було знайдено $1, і %PERL% вказує на локальну копію perl.exe.

Чи може хтось, будь ласка, вказати на правильний спосіб цього?

Відповіді:

2 для відповіді № 1

EDIT: Це трохи потворніше Unix:

for /f "tokens=*" %i in ("perl -e "$tmp="Value: 1000"; if ($tmp =~ /Value:s(d+)/) { print $1; }"") do set VAL = %i

Або використовувати set /p з файлом-посередником:

%PERL% -e "$tmp="Value: 1000"; if ($tmp =~ /Value:s(d+)/) { print $1; }" > file.txt
set /p VAL = < file.txt
del file.txt

Від Дурні хитрощі


0 для відповіді № 2

Чому ви не створюєте змінну всередині сценарію? Див env_var на вікі-програмі win32 perl.