Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DBM файлы, Настройка 
:(
    Опции темы
rcdimon
Дата 27.4.2005, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Мне нужно создать сервер. Сейчас там уже установлен и настроен апач и перл. CGI сценарии работают. Но
dbmopen не работет! Вообще. Не создает никаких файлов. И не выдает никаких ошибок... Как сделать так что б они все же работали????
PM MAIL ICQ   Вверх
korob2001
Дата 27.4.2005, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Не все операционки работают с DBM файлами. Узнай установлен у тебя на сервере модуль DB_File, затем пиши сюда.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
rcdimon
Дата 27.4.2005, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Не знаю. В каталоге перла есть файл DB.pm
И есть DB_File.pm в каталоге i586-linux-thread-multi

Это типа он и есть?
Добавлено @ 12:48
Вот это код, который я использую для работы с BDM файлами

Код

#!/usr/bin/perl -w

use CGI qw(:all);


##############################################################################
##        Объявление некоторых констант                    ##

    $root_path    =    "../cgi-bin";
    $docs_path    =    "../www";


##############################################################################

dbmopen(%a, "$docs_path/hash/admin_pass",0644);

print header( -charset => 'Windows-1251' );

$a{'12345'} = '12345';



PM MAIL ICQ   Вверх
Secandr
Дата 27.4.2005, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 1
Всего: 39



rcdimon укажи полные пути и поставь права на запись в эти папки


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
rcdimon
Дата 27.4.2005, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



путь /usr/lib/perl5/5.8.1/
PM MAIL ICQ   Вверх
Secandr
Дата 27.4.2005, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 1
Всего: 39



Код

    $root_path    =    "../cgi-bin";
    $docs_path    =    "../www";

вот тут пути поставь полные и на эти же папки надо поставить права на запись.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
korob2001
Дата 27.4.2005, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Попробой такой код:
Код

#!/usr/bin/perl
use strict;
use DB_File;

my $file = "mybdm";
my %dbm  = ();

tie( %dbm, 'DB_File', $file, 0644 ) or die "Can't open DBM file: $!\n";
$dbm{1} = 'Perl';
$dbm{2} = 'Delphi';
untie( %dbm );

Если в том же каталоге, где находится и сам скрипт появится файл "mydbm", значит всё работает.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
rcdimon
Дата 27.4.2005, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



korob2001, не работает.
PM MAIL ICQ   Вверх
korob2001
Дата 27.4.2005, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



А что пишет??? Если не знаешь, то допиши в начало кода строку:
Код

use CGI::Carp qw( fatalsToBrowser );


Это сообщение отредактировал(а) korob2001 - 27.4.2005, 14:35


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Гость_frenky
Дата 29.4.2005, 00:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











И без DB_FIle работает
$key="hehe"
get_lock('gamelimit');
dbmopen(%baza ,"gamelimit",0666) || die;
$baza{$key}="sssss";
dbmclose(%baza);
relase_lock('gamelimit');


  Вверх
Гость_asd
Дата 29.4.2005, 08:39 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А может весь глюк в правах доступа. Которые вы указываете при dbmopen и которые стоят на самом перле и на папке, где он создает файл
  Вверх
korob2001
Дата 29.4.2005, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата

И без DB_FIle работает

Гость_frenky - да это мы знаем, просто DBM файл открытый с dbmopen у чела изначально не работал, DBM созданные с помощью DB_File имеют абсолютно другую стрктуру.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Гость_rcdimon
Дата 6.5.2005, 06:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я немного попарился: Изменил права на директории где хранятся DBM'ки. Изменил права самого скрипта и т.д. Короче сами файлы создаются и имеют размер 12Кб. Но в них ничего не записывается и не считывается smile
  Вверх
korob2001
Дата 6.5.2005, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



rcdimon - это нормальное явление, так что не стоит удивляться. Такова природа DBM файлов, они хранят не только информацию помещённую в них из вне, но и информацию о своей структуре, именно по этой причине работать с DBM'кой так же быстро, как и с обычным хешем. smile

Вот так делаем запись:
Код

dbmopen( %dbm, "myfile", 0644 ) or die $!;
   $dbm{ 1 } = "Ля-ля-ля";
dbmclose( %dbm );


А вот так считываем:
Код

dbmopen( %dbm, "myfile", 0644 ) or die $!;
   print $dbm{ 1 };
dbmclose( %dbm );


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

Это сообщение отредактировал(а) korob2001 - 6.5.2005, 11:12


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0535 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.