В системах Unix оболочка расширяет глобусы и передает программы имена файлов.
$ perl -e'CORE::say for @ARGV' *
file1
file2
С другой стороны, оболочка Windows передает значения как есть и оставляет их доесли нужно, запрограммируйте их как глобусы.
>perl -e"CORE::say for @ARGV" *
*
Вы можете выполнить глобирование следующим образом:
>perl -MFile::DosGlob=glob -e"BEGIN { @ARGV = map glob, @ARGV } CORE::say for @ARGV" *
file1
file2
Блок BEGIN
обычно не требуется, но он будетпри использовании -n
(что подразумевается под -p
) убедитесь, что он используется один раз и достаточно рано.
* -MFile::DosGlob=glob
делает glob
семантикой, подобной Windows.Например, *.*
соответствует всем файлам, даже если они не содержат .
.
Интегрировано:
perl -i -MFile::DosGlob=glob -pe"BEGIN { @ARGV = map glob, @ARGV } s,vaadin-element,color-picker,g" *.* demo/* test/* src/* theme/*/*