Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
use Fcntl;
tie(%HASH,"DB_File",$FILENAME,O_RDWR|O_CREAT, 0666) or die "Can't open $FILENAME: $! ";
# все те же манипуляции с хешем, которые описывались выше
# ...
# а потом
untie(%HASH);
Очищаются базы так же, как и в моем примере, т.к. я свой пример делал по подобию этих баз. Но так же, как и мой пример, данные базы не могут хранить сложные структуры. Для этого требуется модуль DB_File и модуль MLDBM. Модуль MLDBM может хранить в хеше более сложные структуры, чем просто числа и скаляры. Если его у ваc нет, то вы можете его скачать из Интернета: запускаете программу ppm из дистрибутива Perl. И пишите: «install MLDBM» – все должно пройти успешно. Использование вот такое:
#!/usr/bin/perl
use MLDBM 'DB_File';
use Fcntl; # для O_RDWR, O_CREAT и т.д.
tie(%h, "MLDBM", "glob.db", O_RDWR|O_CREAT, 0666) or die "Couldn't tie DB_File $users: $!; aborting";
$usr{synthetic}->{password}="matrix reloaded";
$h{users}=\%usr;
untie %h;
Таким образом была создана база данных glob.db, в которой есть ключ «users», в котором есть пользователь «synthetic» с еще одним вложенным хешем, в котором есть ключ «password» со значением «matrix reloaded». Такая структура очень удобна и легко запрашиваема. Далее посмотрим, как мы проверяем то, что создали:
#!/usr/bin/perl
use MLDBM 'DB_File';
use Fcntl; # для O_RDWR, O_CREAT и т. д.
$access=0;
tie(%h,"MLDBM","glod.db",O_RDWR|O_CREAT,0666) or die "Couldn't tie DB_File $users: $!; aborting";
while(($key,$val) = each %h){
if($key eq "users"){
if($val->{synthetic}->{password} eq "matrix reloaded"){
$access=1;last;
# если все правильно, завершаем цикл
}
}
}
untie(%h);
if($access){
print "Matrix has you...";
}else{
print "Follow the white rabbit";
}
С удалением нужно немного по-другому, через временный хеш:
tie(%h,"MLDBM","glob.db",O_RDWR|O_CREAT,0666) or die "Couldn't tie DB_File $users: $!; aborting";