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

  • Автор темы Stan777
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

Stan777

Гость
#1
Нужно удалить пустое место за текстом как это лучше сделать? усекаю файл функцией truncate она оставляет много дерьма за собой. Что делать ?
 
S

_serg_

Гость
#2
truncate усекает файл до заданного размера. она не смотрит есть ли там мустое место или нет
 
S

Stan777

Гость
#3
truncate усекает файл до заданного размера. она не смотрит есть ли там мустое место или нет
Это уж точно, а мне нужно чтобы пробелы любой длины в конце текстового файла отрезались, что делать?, может у кого-то есть быстрый ответ :). Пока я думать не начал...
 
S

_serg_

Гость
#5
хм...
можно читать fseek-ом файл с конца и как только попадется первый непробельный символ, рассчитать новую длину файла и сделать ему truncate
если файл не очень большой (менее мегабайта, например) - можно считать его в переменную, вытереть пробельные символы в конце и залить его обратно - это с десяток строк на все

а еще?
 
S

Stan777

Гость
#6
А мне понравился вот такой прием:
Код:
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;
 
Статус
Закрыто для дальнейших ответов.