Архив за месяц: Август 2010

Отрицательные индексы в массивах Perl

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

Пример:

   my @languages = ('Perl','Python','Php');
   say $languages[-3];
   #тоже самое что и $languages[0] - выведет "Perl"

Для обращения к последнему элементу массива вместо конструкции:

$#languages;
#конструкция $#имя_массива - вернет последний индекс массива

Можно использовать вот такую:

$languages[-1];

Вот нашел!

Нашел вот такой свой комментарий в файле с JavaScript-кодом =)

Больше 3-х лет прошло =)

Вы бы видели код!!! Ужос!!! Про jQuery я тогда и не знал =)

// JavaScript Document
// скрипт для проверки полей формы
//my function 8.06.2007

//================================================

Flash-сообщения

Прикрутил к нашему самописному Perl-овому движку возможность использовать flash-сообщения.

Алгоритм прост:
1. Записать сообщение в сессию.
2. При следующем чтении этого сообщения — удалить его из сессии.

Вот и все! Жизнь стала проще и веселее =)!

MojoX::Validator первое знакомство

На CPAN есть вот такой замечательный модуль для валидации данных (!) MojoX::Validate . Как видно из названия модуль предназначен для использования в фреймворке Mojolicious. Однако и отдельно от него он прекрасно работает, хотя и тащит за собой Mojo =(.

Пример использования:

use MojoX::Validator;

#создаем новый объект
my $validator = MojoX::Validator->new;        
#массовое добавдение полей для проверки
$validator->field([qw/ID USER_ID/])->each(sub{
   shift->required(1)->regexp(qr/^\d+$/)
});
#правило для одного поля 
$validator->field('NAME')->length(1,20);
#валидируем
$validator->validate({NAME => $name});
#получаем ошибки
$validator->errors;

Маленькая особенность.

Если в конструкции:

$validator->field([qw/ID USER_ID/])->each(sub{
shift->required(1)->regexp(qr/^\d+$/)
});

указать только одно поле (в списке полей) — работать не будет!

Для одного поля используйте запись вида:

$validator->field('NAME')->length(1,20);