Ошибка недопустимого аргумента при выполнении Perl в Windows 10

У меня есть этот perl-скрипт.

perl -i -0pe 's/^Insert\s*(.*)\.png\s*\n([^\n]*)$/!\[\2](..\/figures\/\1-tn.png)/mg' */*.markdown

Это отлично работает с MacOS X, но когда я выполняю эту команду в Windows 10, у меня появляется следующее сообщение об ошибке:

C:\Users\hello\Desktop\progit\en>perl -i -0pe "s/^Insert\s*(.*)\.png\s*\n([^\n]*)$/!\[\2](..\/figures\/\1-tn.png)/mg"
*/*.markdown

Can't open */*.markdown: Invalid argument.

Что может вызвать эту проблему в Windows 10? Я использую Strawberry Perl в Windows.


person prosseek    schedule 31.05.2017    source источник
comment
Windows не использует «/», а «\» в качестве разделителя. Я помню, что он терпел это время от времени, но это может быть проблемой. Но у меня нет такого, чтобы проверить этот банкомат. Вы также можете проверить свое регулярное выражение на ту же проблему!   -  person bytepusher    schedule 01.06.2017


Ответы (2)


Это не проблема клубники. Это проблема оболочки. Bash с радостью расширит несколько подстановочных знаков до длинных списков параметров командной строки. Оболочек Microsoft не так много.

person tjd    schedule 02.06.2017

Когда я попробовал Perl от MinGW, ошибки не было. Perl на основе Cygwin, похоже, не имеет проблемы (или обходит эту проблему).

Также см.: проблема с многострочными регулярными выражениями в Perl в Windows 10.

person prosseek    schedule 02.06.2017