Как отменить вывод, если $ ^ I = ". Bak" уже существует? - PullRequest
3 голосов
/ 01 ноября 2009

В Perl я зацикливаю файлы, используя общий шаблон:

$^I=".bak"; 

while(<>) {
  s/pattern/replacement/g;
  print;
}

где $ ^ Я буду создавать резервные копии. Однако я хочу проверить, существует ли файл резервной копии, и отменить сценарий, если он есть, поэтому резервная копия не перезаписывается. Он должен быть явно удален.

Проблема в том, что вне цикла while я не могу этого сделать

if (-e "$ARGV.bak") {
  # print warning and exit
}

потому что $ ARGV не установлен до <>, а внутри цикла while $ ARGV уже заменен.

Так я что-то упустил или я должен сделать это по-другому?

Спасибо!

1 Ответ

3 голосов
/ 01 ноября 2009

Проверьте @ARGV (что означает, что null <> читает свой список имен файлов) перед входом в цикл while, который его использует. например,

die "Backup file already exists.\n" if -e $ARGV[0] . $^I;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...