Я хочу разбить большой файл на маленькие файлы, разделив его на определенную строку с помощью регулярного выражения. Любая помощь? Мой код выполняет работу, но также создает пустой файл.Избегайте создания пустого файла
#!/usr/local/lib/perl/5.14.2
open(INFILE, 'test.txt');
@lines = <INFILE>;
$file = "outfile";
for ($j = 0; $j <= $#lines; $j++) {
open(OUTFILE, ">", $file . $j);
$file_name = $file . $j;
#print "file is $file_name\n";
$i = 0;
while (@lines) {
$_ = shift @lines;
chomp;
$i++;
if ($_ =~ /^###\s*(.*)\s*###/ && $i > 1) {
unshift @lines, "$_\n";
print "$filename\n";
last;
}
print OUTFILE "$_\n";
}
close(OUTFILE);
}
close(INFILE);
Мой входной файл содержит:
-------------
### abcd hdkjfkdj ####
body 1 dsjklsjdfskl
### zyz fhid ###
abcdksdsd djnfkldsfmnsldk ;lkjfkl
---------------------------
он создает 3 outfiles называемые outfile0
, outfile1
, outfile2
. но outfile0
пуст Я хочу этого избежать.
Ну как мы знаем, что не так с вашим кодом, пока мы его не увидим? –
Я пытаюсь добавить свой код, но система не позволяет мне. –
Какая система? Вы имеете в виду StackOverflow? Просто отредактируйте сообщение и вставьте код. –