从单行Perl脚本中检索值

时间:2010-11-22 09:58:51

标签: perl shell windows-shell

我正在尝试解析某些数据的输出文件,并且在将值返回到我的Windows shell时遇到问题。

我要做的只是使用简单的正则表达式返回一个值,并将其存储到我的shell变量中。

我目前有这样的事情:

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

其中%VAL%是我要返回$1中找到的内容的地方,%PERL%指向perl.exe的本地副本。

有人可以指出这样做的正确方法吗?

2 个答案:

答案 0 :(得分:2)

编辑:这比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

来自Silly Batch File Tricks

答案 1 :(得分:0)

为什么不在脚本中创建变量?请参阅win32 perl wiki上的env_var