|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Igor Bondarenko 2:5020/400 08 Feb 2002 13:43:37 To : Igor Bondarenko Subject : Re: <none> -------------------------------------------------------------------------------- Igor Bondarenko wrote: > > Alan Long wrote: > > > > * Reply to a message > > * Originally from Alexey A Kudacov (2:5015/186) to All. > > > > AAK> У меня есть файл. Имеет вид: > > AAK> aaa|bbb|ccc| > > AAK> aaa1|bbb1|ccc1| > > > > AAK> Задача: читать файл построчно с конца. Варианты кончено есть, но > > AAK> хочется посмотреть более практичный и рациональный. Заранее > > AAK> спасибо! > > > > Можно попробывать банальный: > > open( IN, $file ); > > @array = reverse <IN>; > > close( IN ); > > for( $i = 0; $i < $#array; $i++ ) { > > print $array[$i]; > > } > > То есть чтение всего файла в память (массив) с последующим использованием > > функции reverse для переворачивания массива. > > > > Второй, более сложный вариант: > > use DB_File; > > > > $dbh = tie( @array, "DB_File", O_RDONLY, 0640, $DB_RECNO ); > > > > for( $i = $dbh->length; $i >= 0; $i-- ) { > > print @array[$i]; > > } > > untie @array; > > ... можно еще так: > > open(FILE, "file.txt"); > @file = <FILE>; > close(FILE); > foreach $i (@file) { print $i } > > или > > open(FILE, "file.txt"); > while(<FILE>) { print $_ } > close(FILE) ой... Забыл что надо с конца: open(FILE, "file.txt"); @file = <FILE>; while ($line = pop @file) { print $line } close(FILE); -- Best regards, Igor --- ifmail v.2.15dev5 * Origin: - (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/63183f4d0742.html, оценка из 5, голосов 10
|