ОБСУЖДЕНИЕ

Как усеч нормально файл ?

5 ответов 6,2 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Статус
Закрыто для дальнейших ответов.
Автор темы
Нужно удалить пустое место за текстом как это лучше сделать? усекаю файл функцией truncate она оставляет много дерьма за собой. Что делать ?
 
truncate усекает файл до заданного размера. она не смотрит есть ли там мустое место или нет
 
truncate усекает файл до заданного размера. она не смотрит есть ли там мустое место или нет
Это уж точно, а мне нужно чтобы пробелы любой длины в конце текстового файла отрезались, что делать?, может у кого-то есть быстрый ответ :). Пока я думать не начал...
 
truncate усекает файл до заданного размера. она не смотрит есть ли там мустое место или нет
я в книге рецептов нашел целых два способа решения этой задачи!
 
хм...
можно читать fseek-ом файл с конца и как только попадется первый непробельный символ, рассчитать новую длину файла и сделать ему truncate
если файл не очень большой (менее мегабайта, например) - можно считать его в переменную, вытереть пробельные символы в конце и залить его обратно - это с десяток строк на все

а еще?
 
А мне понравился вот такой прием:
Код:
open(FH,"+<$old") or die "cant open $!\n";
# определим размер и сделаем усечение файла.
while(<FH>){
$addr=tell(FH) unless eof(FH);
}
truncate(FH, $addr) or die "cant truncate $!\n";
close(FH);
exit;
 
Статус
Закрыто для дальнейших ответов.