Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Файлы


Автор: int19h 11.9.2009, 20:45
Добрый день.
Тема про файлы, точнее - про их хранение.
Вообщем через web-скрипт, написанный разумеется на перле, сохраняю  файл с данными в какой либо директории.
Директория: скажем "base_nick".
Относительно хоста она выглядит к примеру так: "home\html\www\base_nick".
Относительно web: http://domen.ru/base_nick/
Сами файлы - текстовые, скажем : петя.txt

Теперь суть.
Запись в файл:
Код

$id = (123);
$login = (петя); # в моем случае утрировано, имя вводится через форму типа регистрации
open (NICK, ">>base_nick/$login.txt");
print NICK "id=$id login=$login";
close (NICK);


после чего в директории home\html\www\base_nick\ отлично ложится файлик петя.txt с записанными вовнутрь данными.

Чего хочу? Подскажите пример, чтоб если будет попытка снова записать такой же файл, то выскочила бы ошибка, что данное имя занято, и разумеется файл бы ни в коем случае не перезаписался... То есть что то вроде поиска, есть ли такой файл, и если есть - то запрет на перезапись и возврат обратно с комменатрием о занятости имени. Причем в директории может быть ну очень много файлов, скажем 100 000... 

Плиз...  smile   smile 

Автор: sir_nuf_nuf 11.9.2009, 21:57
В перл есть оператор -f который возвращает истину если файл с указанным именем существует.

Код

if (-f '/etc/passwd') {
  print "ok, nothing serious\n";
}
else {
  print "Aaaahh! It's time to panic!\n";
}


Соответсвенно там где вы делаете запись, просто проверяйте существует ли такой файл.
И если существует - то не пишите.

Автор: int19h 11.9.2009, 22:19
Хорошо...
Я сейчас попробую ваш пример.
Но вот в книге по perl есть пример проверки файла, там вот что:

-с = проверяет директорию
-е = проверяет наличие существование файла
-s = представляет инфу по размеру файла
-w = проверяет доступ на дозапись в файл

и пример дан

Код

if(-e $filename)
{
print "есть такой";
}
else
{
print "нет такого";
}


вообщем оба проверю варианта, спасибо за пример, понял, где копать...  smile 

Автор: int19h 11.9.2009, 23:50
Всё, разобрался с ключами, sir_nuf_nuf - спасибо большое, всё верно, понял зачем твой ключ и зачем другие ключи, всё работает отлично =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)