Perl - редактирование файлов на месте и вывод в другой каталог - PullRequest
0 голосов
/ 01 апреля 2019

После ускоренного курса в Perl (например, SO и т. Д.) У меня есть рабочий код для извлечения каталогов ввода и вывода .SVG из командного файла. Код перебирает каталог ввода файлов и выводит исправленную графику. Это все здорово ...

Проблема в том, что пользователь вводит один и тот же путь как для ввода, так и для вывода, указывая, что он хочет исправить графику на месте. Затем происходит то, что файлы 0 длины записываются во входной каталог, перезаписывая текущие файлы. Есть ли «перлонический» способ сделать это, используя приведенный ниже код в качестве основы?

opendir IN, $dirname;
my @in = grep { /^[^.]/ } readdir IN;
closedir IN;

for my $in (@in) {
  open IN, '<', "$dirname/$in" || next;
  open OUT, '>', "$outdirname/$in" || die "can't open file output/$in";
  foreach(<IN>) { #read file line by line

    # Strings to correct Note: Escaped ( with \
    s/rotate\(-180/rotate\(-0/g;
    for my $key (keys %stroke_width_hash) {
        s/$key/$stroke_width_hash{$key}/g;
    }
    # Print out line to OUT file
    print OUT $_;
  }
  close OUT;
  close IN;
}

У меня также есть базовый сценарий Perl, который успешно редактирует файлы на месте. Но требование состоит в том, чтобы объединить их в один скрипт, если это возможно.

Я сейчас увяз в настройках, посмотрев на Tie :: File, File :: Slurp и т. Д., И меня смущает вопрос о том, какой вариант лучше всего использовать ...

Любая помощь будет оценена

...