2
У меня есть текстовый файл, который нужно разделить на несколько текстовых файлов с помощью Perl и выводаPerl: Как разбить файл
Например:
Данные начинается с:
[TABLE]
DATA........
DATA........
[/TABLE]
[PAGE]
[TABLE]
DATA........
DATA........
[/TABLE]
Желаемая Выход:
fILE1.TXT
DATA........
DATA........
file2.txt
DATA........
DATA........
Так в основном ничего между [TABLE]
& [/TABLE]
должен быть новый текстовый файл и так далее. И соглашение об именах для новых текстовых файлов может быть File1.txt, File2.txt и т. Д.
Пожалуйста, указывайте мне в правильном направлении.
Благодарим за помощь.
#!usr/bin/perl
my $fi, $fi2;
my $line;
my $i;
my @lines;
my @filenameparts;
my $filename = "file1.txt";
open($fi, "< complex.txt");
@lines = <$fi>;
open ($fi2, " > $filename");
foreach (@lines)
{
if (($i > 0) and $_ =~ /[TABLE]/)
{
@filenameparts = split("_", $filename);
foreach (@filenameparts)
{
print "-----------------------------\n";
print .$_;
print "-----------------------------\n";
}
@filenameparts[1] = substr(@filenameparts[1], 0, @filenameparts[1].length() - 5);
@filenameparts[1] = ($filenameparts[1] + 1);
$filename = @filenameparts[0]."_"[email protected][1].".txt";
print $filename;
close($fi2);
open ($fi2, " > $filename");
$i = 0;
print $fi2 $_;
}
else
{
print $fi2 $_;
}
$i++;
}
Я попробовал этот код, приведенный выше, и это только позволяет мне проникнуть в 5 текстовых файлов, когда я ожидаю 10. Кроме того, будет ли более эффективным способом и более короткий код для достижения такой же цели. С уважением. – dolm77
Прежде всего, всегда '' использовать строгие; '' и '' использовать предупреждения, '' в начале вашего скрипта. Кажется, что ваш способ решить, какой файл писать, очень сложный. Просто используйте счетчик (назовите его '' $ j'') и '' open ($ fi2, '>', 'File $ j.txt ");' 'когда вам нужно открыть следующий файл. – mzedeler
Не нужно вставлять файл в массив ... там действительно нет. –