Прежде всего, я думаю, что в вашем файле есть еще одна строка вверху, которую вы не включили.Причина моего подозрения ниже:
Ваша проблема не в регулярном выражении, ваша проблема в том, что <FILE>
читает строку каждый раз, когда вы ее вызываете.Таким образом, каждый цикл в вашем цикле читает одну строку в while(<FILE>)
, а затем еще одну в if(<FILE> =~ m/(.+)/)
.Ваш if
должен быть именно таким:
if(m/(.+)/)
, чтобы он использовал переменную $_
по умолчанию, которую будет заполнять while(<FILE>)
.
Кроме того, ваш цикл while
выполняет гораздо больше работы, чем нужно, вы можете просто сделать это:
open FARA, '>>:encoding(UTF-8)', 'udtale.txt';
while(<FILE>) {
print FARA;
}
close (FARA);
или даже это:
open FARA, '>>:encoding(UTF-8)', 'udtale.txt';
print FARA while(<FILE>);
close (FARA);
Если вы пытаетесь пропустить пустые строки, тогдаможет быть это:
open FARA, '>>:encoding(UTF-8)', 'udtale.txt';
while(<FILE>) {
chomp;
print FARA $_, "\n" if($_);
}
close (FARA);