Встроенная замена Perl в скрипте Perl - PullRequest
3 голосов
/ 19 декабря 2010

Я пытаюсь написать Perl-скрипт со встроенной заменой. Я нашел этот пример сценария, чтобы сделать это, но не уверен, как его использовать, так как я не уверен, как указать файл и обработчик?

$^I = '.bak'  # Call for in-place editing; make backups with a .bak suffix

while (<>) 
{
  s/foo/bar/
  print;
}

1 Ответ

4 голосов
/ 19 декабря 2010

<> - это специальный дескриптор файла.

Специальный дескриптор файла: <>

Как и переменная по умолчанию, специальный дескриптор файла, написанный как <>, является сокращенным обозначением языка, добавленного для облегчения написания программ. Специальный дескриптор файла обрабатывает все аргументы командной строки как имена файлов и открывает каждый по очереди. Если аргументов командной строки нет, она открывается и читает из STDIN. Согласно соглашению UNIX, если в качестве аргумента командной строки указано «-», вместо файла открывается STDIN.

Источник

Установка переменной $^I позволяет редактировать на месте - другими словами, файл изменяется напрямую.

Чтобы использовать этот скрипт, вы можете, например, сделать это:

perl yourscript.pl somefile.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...