Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

Работа с базами данных на Perl


Владислав Гошко

В наше время базы данных широко используются в разных сферах человеческой жизни. Самые простые базы данных – это просто файлы определенной структуры, а сложные – это файлы, имеющие свой формат данных и, естественно, определенную структуру. В данной статье я рассмотрю работу с базами данных на языке программирования Perl. Для удобства пойдем от маленького к большому. Для начала давайте рассмотрим обычный файл как базу данных, т.е. обычный файл можно представить как определенно сформатированный текст. Файл будет отформатирован следующим образом:

Name1|Value1#Value2#Value3#...#ValueN

Name2|Value1#Value2#Value3#...#ValueN

Name3|Value1#Value2#Value3#...#ValueN

...

NameN|Value1#Value2#Value3#...#ValueN

Почему разделителями я выбрал именно «|» и «#»? Потому что они не являются безопасными символами (из RFC 2396). По той же причине можно было выбрать разделителями любой символ, кроме латинских букв, цифр, и вот этих:

";", "/", "?", ":", "@", "&", "=", "+", "$", ",", "-", "_", ".", "!", "~", "*", "'", "(", ")"

Эти разделители (кроме вышеописанных символов) могут использоваться в значениях или в именах переменных, только нужно будет использовать модуль URI::Escape, для того чтобы переменные с этими разделителями не испортили структуру. Специально для работы с нашими базами данных создадим модуль simple_db.pm. Итак, начнем:

#!/usr/bin/perl

 

# создаем пакет

package simple_db;

 

use Exporter;

# как и говорилось, используем модуль для перевода небезопасных символов в формат %XX

use URI::Escape;

 

@ISA=("Exporter");

@EXPORT=qw(&opendb &closedb %g);

# экспортируем используемые функции, а также хеш %g, для того чтобы функция знала,

# в какой файл записывать изменения хеша, вводимого в аргументах

 

sub opendb{

    my($h,$file)=@_;

    my($name,$vals,@values);

    local(*DB);

    open(DB,$file) or return 0;

    # блокируем файл на тот случай, если во время чтения кто-то захочет изменить

    # файл (совместная блокировка – для чтения)

    flock(DB,1);

    while(<DB>){

           chomp;

           ($name,$vals)=split(/|/,$_,2);

           next if !$name;

           $name = uri_unescape($name);

           @values = split(/#/,$vals);

           # если значений много, создаем анонимный массив, иначе просто

           # присваиваем одно значение


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2016 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100