Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

PERL: Удаление строки из файла

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Aldekein



Зарегистрирован: 08.03.2003
Сообщения: 2
Откуда: Net

СообщениеДобавлено: Сб Мар 08 2003 20:06    Заголовок сообщения: PERL: Удаление строки из файла Ответить с цитатой

Есть поиск по файлу базы данных пользователей. При администрировании, для того чтобы удалить пользователя нужно удалить строку из файла.

Как это сделать??

Вырезка того места:

if ($param eq "delete") {
print "Administration panel\n";
print "Administration panel\n";
print "User adminUser's $param2 profile deleted...\n";
### deleting the profile file
@mas_login=split //,$param2;
$subdir=@mas_login[0];
unlink ("$memberdatadir/$subdir/$param2") || print "Error unlinking file $memberdatadir/$subdir/$param2\n\n";
### clearing the search databaze entry
open DEL,">$memberdatadir/members.dat" || print "Error opening file $memberdatadir/members.dat\n\n";
foreach(){
chomp;
($login,$city,$state,$country,$age,$gender)=split /\\divider/;
if ($login eq $param2) {
# И вот здесь-то надо как-то эту строчку удалить. Желательно именно удалить, а не сделать пустой. Возможные вариации скрипта кидайте сюда, плиз.
}
}
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
FFF
Гость





СообщениеДобавлено: Вт Мар 11 2003 13:42    Заголовок сообщения: Re: PERL: Удаление строки из файла Ответить с цитатой

> И вот здесь-то надо как-то эту строчку удалить.
если строку не записать в выходной файл, то ее и не будет в нем (в выходном файле) ):

если совсем не хочется терять строку, то можно ввести признак того, что строка удалена. Например, перед именем пользователя ставить * (звездочку). Тогда в тех местах скрипта, где проверяется имя пользователя, возможно, потребуются небольшие изменения.
Вернуться к началу
Aldekein



Зарегистрирован: 08.03.2003
Сообщения: 2
Откуда: Net

СообщениеДобавлено: Вт Мар 11 2003 18:08    Заголовок сообщения: Re: PERL: Удаление строки из файла Ответить с цитатой

Это бы меня тоже устроило, конечно. Но как???
Как редактировать текущую строку не переписывая полностью весь файл.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
FFF
Гость





СообщениеДобавлено: Ср Мар 12 2003 09:51    Заголовок сообщения: Re: PERL: Удаление строки из файла Ответить с цитатой

понял. я считал, что речь идет о копировании файла с попутным удалением записей. Если речь идет о редактировании на месте, то, возможно, Вам поможет функция

seek FILEHANDLE, OFFSET, WHENCE

например,

------------------------------------- ------
use FileHandle;

$F_NAME= "users.txt";

sysopen HANDLE, $F_NAME, O_RDWR, 0700
or die "sysopen $F_NAME: $!";

HANDLE->seek(150, 0);
HANDLE->print("150_150 XXXXX");
HANDLE->close();
-------------------------------- -----------

Текущую позицию в открытом файле можно получить с помощью функции tell. после нахождения записи, подлежащей удалению, тек.позиция файла будет находиться в конце прочитанной записи. неообходимо вернуться в позицию перед началом записи, например,

HANDLE->seek($rec_len, 1);

и выполнить

HANDLE->print($new_record);
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...