我正在使用规格基准,并在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
保留了/
。伤心。我不知道下一步该怎么做。
答案 0 :(得分:2)
您说的所有话都不会加起来。前一个/
和后一个/
之间没有什么区别,因为它们都在同一个参数中。我怀疑您误诊了问题。
docs中没有任何内容。
但是如果/
确实存在问题,可以按照以下方法解决:
int(eval(qq{$SPECCOPYNUM\x2F40})) # int($SPECCOPYNUM/40)