Windows принимает оператор деления '/' в качестве обратной косой черты '\' в команде Perl - PullRequest
0 голосов
/ 09 апреля 2019

Я работаю с тестами спецификации и использую specperl для команды perl в Windows.Мне нужно сделать операцию деления в команде perl, но окна всегда меняют оператор / на \.Таким образом, это не может быть распознано 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.Я попытался 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 } " непосредственно в командной оболочке Windows, и он отлично работает.
Когда я помещаю это в файл конфигурации spec, он изменяется, / становится \, но я обнаружил, что опция /b /wait /node сохраняет /.Печальный.Я понятия не имею, что делать дальше.

1 Ответ

2 голосов
/ 10 апреля 2019

Все, что вы говорите, не складывается. Нет никакой разницы между более ранним / и последним /, поскольку все они находятся в одном аргументе. Я подозреваю, что вы неправильно диагностировали проблему.

В документах нет ничего об этом.

Но если действительно существует проблема с /, вы можете обойти ее следующим образом:

int(eval(qq{$SPECCOPYNUM\x2F40}))     # int($SPECCOPYNUM/40)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...