Следующее будет иметь проблемы с входными файлами, у которых есть строки, у которых есть только перевод строки или как в случае, если у меня были проблемы с FF в начале некоторых строк (Form Feed - файл был выводом из программы разработан в конце 70-х годов и до сих пор имеет форматирование для линейного принтера и все еще находится на Фортране - я скучаю по широкой непрерывной бумаге для рисования блок-схем на обороте).
open (SIMFIL, "<", 'InputFileName') or die "Can´t open InputFileName\n" ;
open (EXTRDATS, ">>", 'OutputFileName' ) or die "Can´t open OutputFileName\n";
$Simfilline = "";
while (<SIMFIL>) {
$Simfilline = <SIMFIL>;
print EXTRDATS $Simfilline;
$Simfilline = <SIMFIL>;
print EXTRDATS $Simfilline;
}
close SIMFIL;
close EXTRDATS;
`
Вот когда пригодится eof - выражение: while () может возвращать false при условиях, отличных от конца файла.
open (SIMFIL, "<", 'InputFileName') or die "Can´t open InputFileName\n" ;
open (EXTRDATS, ">>", 'OutputFileName' ) or die "Can´t open OutputFileName\n";
$Simfilline = "";
while (!eof SIMFIL) {
$Simfilline = <SIMFIL>;
print EXTRDATS $Simfilline;
$Simfilline = <SIMFIL>;
print EXTRDATS $Simfilline;
}
close SIMFIL;
close EXTRDATS;
Последний фрагмент кода, по-видимому, точно дублирует входной файл.