У меня есть несколько текстовых файлов, которые когда-то были таблицами в базе данных, которая теперь разбирается.Я пытаюсь собрать их, что будет легко, как только я приведу их в удобную форму.Первый файл «keys.text» представляет собой просто список меток, неправильно отформатированных.Например:
Sa 1 #
Sa 2
U 328 #*
Это всегда буква (буквы), [пробел], число (ы), [пробел] и иногда символ (ы).Текстовые файлы, соответствующие этим ключам, совпадают, за ними следует строка текста, также разделенная или разделенная пробелом.
Sa 1 # Random line of text follows.
Sa 2 This text is just as random.
U 328 #* Continuing text...
То, что я пытаюсь сделать в приведенном ниже коде, это сопоставить ключ из "keys.text" с тем же ключом в файлах .txt и поместить вкладку между ключом,и текст.Я уверен, что пропускаю что-то очень простое, но результат, который я получаю, выглядит идентично исходному .txt файлу.
Заранее спасибо за любые предложения или помощь!
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
open(IN1, "keys.text");
my $key;
# Read each line one at a time
while ($key = <IN1>) {
# For each txt file in the current directory
foreach my $file (<*.txt>) {
open(IN, $file) or die("Cannot open TXT file for reading: $!");
open(OUT, ">temp.txt") or die("Cannot open output file: $!");
# Add temp modified file into directory
my $newFilename = "modified\/keyed_" . $file;
my $line;
# Read each line one at a time
while ($line = <IN>) {
$line =~ s/"\$key"/"\$key" . "\/t"/;
print(OUT "$line");
}
rename("temp.txt", "$newFilename");
}
}
РЕДАКТИРОВАТЬ: просто чтобы уточнить, результаты должны сохранить символы от клавиш, если таковые имеются.Таким образом, они будут выглядеть так:
Sa 1 # Random line of text follows.
Sa 2 This text is just as random.
U 328 #* Continuing text...