Windows在Perl命令中将除法运算符'/'作为反斜杠'\'

时间:2019-04-09 09:53:51

标签: windows perl

我正在使用规格基准,并在Windows上对perper命令使用specperl。我需要在perl命令中执行除法运算,但是Windows总是将/运算符更改为\。因此,perl无法识别它。

我尝试了多次写作,但是当然/变成了\//变成了\\\/变成了\\ \\变成了\\

这是我的specperl命令:

specperl -e "system sprintf qq{start /b /wait /node %x /affinity %x%s %s}, (int($SPECCOPYNUM/40)), (1<<($SPECCOPYNUM%4)), ('0'x($SPECCOPYNUM%40>>2)), q{ %{ENV_PIN_CMD} $command } "

仅关注int($SPECCOPYNUM/40),如果我使用int($SPECCOPYNUM*0.025),一切正常。但是,此40是一个变量,因此我不能使用乘法来替换它。

在这种情况下是否无法进行/除法运算?

任何帮助将不胜感激。

更新

这与Windows-perl无关。 我直接在Windows命令外壳中尝试了R:/ics/itools/efi2_win64/perl/bin/perl.exe -e "system sprintf qq{start /b /wait /node %x /affinity %x%s %s}, (int(1/40)), (1<<(1%4)), '', q{ ls } ",它工作正常。
当我将其放入规范配置文件时,它被更改,/变成了\,但是我发现选项/b /wait /node保留了/。伤心。我不知道下一步该怎么做。

1 个答案:

答案 0 :(得分:2)

您说的所有话都不会加起来。前一个/和后一个/之间没有什么区别,因为它们都在同一个参数中。我怀疑您误诊了问题。

docs中没有任何内容。

但是如果/确实存在问题,可以按照以下方法解决:

int(eval(qq{$SPECCOPYNUM\x2F40}))     # int($SPECCOPYNUM/40)