Автор Тема: Как удалить строку из файла  (Прочитано 7678 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ilya

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 108
  • +0/-0
  • 0
    • Просмотр профиля
    • www.svd.ru
Как удалить строку из файла
« Ответ #15 : 05 Апреля 2001, 18:48:37 »
Вот так делал я:

$strokdel = "Эсли строка в файле содержит этот текст, то она будет удалена";

open(FILE, "file.txt");#Открываем файл
@file=;# Присваеваем содержимое масиву
close(FILE);# Закрываем файл
$t=@file; # Определяем кол-во строк в масиве (файле)
for ($i=0;$i<=$t;$i++) # Понимаю, но сказать не могу
{if( $file[$i] == $strtodel ) # Если в масиве строка равна переменной $strodel
{$file[$i]=~s/$strtodel//;} # То заменяем ее на пустую строку
}
open(FILE, ">$file");# Открываем файл
print FILE @file;# Пишем измененный масив в файл
close(FILE); # Закрываем файл

Сам парился долго, пока NAS не подсказал!

Оффлайн lodevar

  • Сеньор-Помидор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 757
  • +0/-0
  • 2
    • Просмотр профиля
    • http://lodevar.hut.ru
Как удалить строку из файла
« Ответ #16 : 06 Апреля 2001, 12:01:37 »
Ну и для совсем извращенных еще пример - один массив, одно открытие файла:
$search_line="delete me!";
$offset=0;
open(FILE,"+@dat=;
foreach $line (@dat)
{
  $line1=$line;
  chomp $line1;
  if($line1 eq $search_line)
  {
   splice @dat,$offset,1;
  }
  $offset++;
}
seek(FILE,0,0);
print FILE @dat;
truncate(FILE,tell(FILE));
С наилучшими пожеланиями. LODEVAR

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
Как удалить строку из файла
« Ответ #17 : 06 Апреля 2001, 13:03:59 »
эээ close не надо?
ну, будем исповедоваться?

Оффлайн lodevar

  • Сеньор-Помидор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 757
  • +0/-0
  • 2
    • Просмотр профиля
    • http://lodevar.hut.ru
Как удалить строку из файла
« Ответ #18 : 06 Апреля 2001, 13:09:56 »
Цитировать
AliMamed (06-04-2001 13:03):
эээ close не надо?
Вобщем-то надо. Но если уж так, то flock тоже надо. ;-)
С наилучшими пожеланиями. LODEVAR

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28