После ускоренного курса в 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 и т. Д., И меня смущает вопрос о том, какой вариант лучше всего использовать ...
Любая помощь будет оценена