Positive Integers --- ^\d+$
Negative Integers --- ^-\d+$
Integer --- ^-{0,1}\d+$
Positive Number --- ^\d*\.{0,1}\d+$
Negative Number --- ^-\d*\.{0,1}\d+$
Positive Number or Negative Number - ^-{0,1}\d*\.{0,1}\d+$
Phone number --- ^\+?[\d\s]{3,}$
Phone with code --- ^\+?[\d\s]+\(?[\d\s]{10,}$
Year 1900-2099 --- ^(19|20)[\d]{2,2}$
Date (dd mm yyyy, d/m/yyyy, etc.) --- ^([1-9]|0[1-9]|[12][0-9]|3[01])\D([1-9]|0[1-9]|1[012])\D(19[0-9][0-9]|20[0-9][0-9])$
IP v4 --- ^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]){3}$
Personal Name --- ^[\w\.\']{2,}([\s][\w\.\']{2,})+$
Username --- ^[\w\d\_\.]{4,}$
Password at least 6 symbols --- ^.{6,}$
Password or empty input --- ^.{6,}$|^$
email --- ^[\_]*([a-z0-9]+(\.|\_*)?)+@([a-z][a-z0-9\-]+(\.|\-*\.))+[a-z]{2,6}$
domain --- ^([a-z][a-z0-9\-]+(\.|\-*\.))+[a-z]{2,6}$
Match no input --- ^$
Match blank input --- ^\s[\t]*$
Match New line --- [\r\n]|$
Показаны сообщения с ярлыком perl. Показать все сообщения
Показаны сообщения с ярлыком perl. Показать все сообщения
четверг, 22 июля 2010 г.
четверг, 4 февраля 2010 г.
mason + lighttpd fastcgi
включаем mason в lighttpd
сначало готовим скрипт mason.cgi
#!/usr/bin/perl
use CGI::Fast;
use HTML::Mason::CGIHandler;
use URI;
{
package HTML::Mason::Commands;
## anything you want available to components
use Storable qw(freeze thaw);
use HTTP::BrowserDetect;
## An example of how to keep a $dbh persistent
##our $dbh = DBI->connect_cached(
## 'dbi:Pg:dbname=dbname'
## , 'username'
## , 'password'
## , {AutoCommit=>0, RaiseError=>1, PrintError=>1}
##) || die "Could not Connect to DB".$dbi::errstr ;
}
# lazily-instantiated variables
my $cgi;
my $h;
while ($cgi = new CGI::Fast())
{
## make sure it is alive! (if not it will reconnect)
## $HTML::Mason::Commands::dbh->ping;
my $uri = URI->new( $ENV{REQUEST_URI} );
## this is a hack, that emulates mod_perl behavior see notes at bottom
## You might not want this hack, and it might be worse than not having it
$uri->path( $uri->path . 'index.html' )
if $uri->path =~ /\/$/
;
$ENV{PATH_INFO} = $uri->path;
$ENV{QUERY_STRING} = $uri->query;
$ENV{REQUEST_URI} = "$uri";
# this is lazily instantiated because %ENV is not set at startup time
if (! $h) {
$h = HTML::Mason::CGIHandler->new(
comp_root => $ENV{MASON_COMP_ROOT}
, data_dir => $ENV{MASON_DATA_ROOT}
, error_mode => 'fatal'
, error_format => 'line'
## Three good globals dbh user and session
, allow_globals => [qw/$dbh $U $S/]
);
}
## hand off to mason
eval { $h->handle_cgi_object($cgi) };
## catch error
if ( my $raw_error = $@ ) {
warn $raw_error;
# print out a pretty system error page and log $raw_error
}
## things went well
else {
$HTML::Mason::Commands::dbh->commit;
}
}
exit 0;
добавляем в lighttpf.conf
fastcgi.map-extensions = ( ".css" => ".html", "/" => ".html" )
index-file.names = ( "index.html" )
url.access-deny = ( ".mhtml" ) ## add autohandler/dhandler if you'd like
fastcgi.server = ( ".html" =>
((
"socket" => "/tmp/fastcgi.socket",
"bin-path" => "/etc/lighttpd/bin/mason.cgi", # пусть до скрипта
"check-local" => "disable",
"bin-environment" => (
"MASON_COMP_ROOT" => "/www/myproject",
"MASON_DATA_ROOT" => "/www/myproject/data",
),
))
)
index.html кладем в comp_root
простенький helloworld
<HTML>
<HEAD>
<TITLE> Hello <% $worldname %> world!!</TITLE>
</HEAD>
<BODY bgcolor="#FFFFFF">
Hello World<BR>
This is my <B><% $count %></B> Mason component.
</BODY>
</HTML>
<%init>
my $worldname = "Great";
my $count = "first";
</%init>
<%args>
</%args>
сначало готовим скрипт mason.cgi
#!/usr/bin/perl
use CGI::Fast;
use HTML::Mason::CGIHandler;
use URI;
{
package HTML::Mason::Commands;
## anything you want available to components
use Storable qw(freeze thaw);
use HTTP::BrowserDetect;
## An example of how to keep a $dbh persistent
##our $dbh = DBI->connect_cached(
## 'dbi:Pg:dbname=dbname'
## , 'username'
## , 'password'
## , {AutoCommit=>0, RaiseError=>1, PrintError=>1}
##) || die "Could not Connect to DB".$dbi::errstr ;
}
# lazily-instantiated variables
my $cgi;
my $h;
while ($cgi = new CGI::Fast())
{
## make sure it is alive! (if not it will reconnect)
## $HTML::Mason::Commands::dbh->ping;
my $uri = URI->new( $ENV{REQUEST_URI} );
## this is a hack, that emulates mod_perl behavior see notes at bottom
## You might not want this hack, and it might be worse than not having it
$uri->path( $uri->path . 'index.html' )
if $uri->path =~ /\/$/
;
$ENV{PATH_INFO} = $uri->path;
$ENV{QUERY_STRING} = $uri->query;
$ENV{REQUEST_URI} = "$uri";
# this is lazily instantiated because %ENV is not set at startup time
if (! $h) {
$h = HTML::Mason::CGIHandler->new(
comp_root => $ENV{MASON_COMP_ROOT}
, data_dir => $ENV{MASON_DATA_ROOT}
, error_mode => 'fatal'
, error_format => 'line'
## Three good globals dbh user and session
, allow_globals => [qw/$dbh $U $S/]
);
}
## hand off to mason
eval { $h->handle_cgi_object($cgi) };
## catch error
if ( my $raw_error = $@ ) {
warn $raw_error;
# print out a pretty system error page and log $raw_error
}
## things went well
else {
$HTML::Mason::Commands::dbh->commit;
}
}
exit 0;
добавляем в lighttpf.conf
fastcgi.map-extensions = ( ".css" => ".html", "/" => ".html" )
index-file.names = ( "index.html" )
url.access-deny = ( ".mhtml" ) ## add autohandler/dhandler if you'd like
fastcgi.server = ( ".html" =>
((
"socket" => "/tmp/fastcgi.socket",
"bin-path" => "/etc/lighttpd/bin/mason.cgi", # пусть до скрипта
"check-local" => "disable",
"bin-environment" => (
"MASON_COMP_ROOT" => "/www/myproject",
"MASON_DATA_ROOT" => "/www/myproject/data",
),
))
)
index.html кладем в comp_root
простенький helloworld
<HTML>
<HEAD>
<TITLE> Hello <% $worldname %> world!!</TITLE>
</HEAD>
<BODY bgcolor="#FFFFFF">
Hello World<BR>
This is my <B><% $count %></B> Mason component.
</BODY>
</HTML>
<%init>
my $worldname = "Great";
my $count = "first";
</%init>
<%args>
</%args>
среда, 2 сентября 2009 г.
Failed to modify UNIX password: Insufficient access
при очередном обновлении всей системы выползла ошибка в smbldap-tools
Failed to modify UNIX password: Insufficient access ... во время смены пароля.
Проблема в том что ldap стал слать нахер если к нему лезут с неизвестным полем.
в моем случае это shadowLastChange. Решение тривиально, закоментарить в скрипте smbldap-passwd
три строки
# replace => [userPassword => "$hash_password"],
и ещё раз чуть ниже
# replace => [shadowLastChange => "$shadowLastChange"]
# replace => [shadowLastChange => "$shadowLastChange"]
По умному надо схемы править, но пока быстрое решение.
Failed to modify UNIX password: Insufficient access ... во время смены пароля.
Проблема в том что ldap стал слать нахер если к нему лезут с неизвестным полем.
в моем случае это shadowLastChange. Решение тривиально, закоментарить в скрипте smbldap-passwd
три строки
# replace => [userPassword => "$hash_password"],
и ещё раз чуть ниже
# replace => [shadowLastChange => "$shadowLastChange"]
# replace => [shadowLastChange => "$shadowLastChange"]
По умному надо схемы править, но пока быстрое решение.
пятница, 24 июля 2009 г.
lighttpd fastcgi catalyst
fastcgi.server = (
"" => (
"germion" => (
"socket" => "/tmp/germion.socket",
"check-local" => "disable",
"bin-path" => "/germion/script/germion_fastcgi.pl",
"min-procs" => 2,
"max-procs" => 5,
"idle-timeout" => 20,
)
)
)
"" => (
"germion" => (
"socket" => "/tmp/germion.socket",
"check-local" => "disable",
"bin-path" => "/germion/script/germion_fastcgi.pl",
"min-procs" => 2,
"max-procs" => 5,
"idle-timeout" => 20,
)
)
)
понедельник, 22 июня 2009 г.
perl -X функции
if (-e $filename) { print "Файл существует.\n"; }
if (-z $filename) { print "Файл существует и он пустой.\n"; }
if (-r $filename) { print "У меня есть право на чтение файла.\n"; }
if (-w $filename) { print "У меня есть право на изменение файла.\n"; }
if (-x $filename) { print "У меня есть право на выполнение файла.\n"; }
if (-o $filename) { print "Я владелец файла.\n"; }
if (-f $filename) { print "$filename - это обычный файл.\n"; }
if (-d $filename) { print "$filename - это каталог.\n"; }
if (-l $filename) { print "$filename - это символическая ссылка.\n"; }
if (-p $filename) { print "$filename - это FIFO.\n"; }
if (-S $filename) { print "$filename - это сокет.\n"; }
if (-b $filename) { print "$filename - это блок-ориентированное спец. устройство.\n"; }
if (-c $filename) { print "$filename - это символьное спец. устройство.\n"; }
if (-t $filename) { print "Файловый манипулятор открыт для терминала.\n"; }
if (-u $filename) { print "У файла установлен бит setuid\n"; }
if (-g $filename) { print "У файла установлен бит setgid\n"; }
if (-k $filename) { print "У файла установлен бит запрета (бит-липучка)\n"; }
if (-T $filename) { print "Это текстовый файл.\n"; }
if (-B $filename) { print "Это двоичный файл.\n"; }
$size = -s $filename;
print "Размер файла: $size.\n"; }
$modification_time = int(-M $filename);
print "Со времени последнего изменения файла прошло $modification_time дней.\n";
$access_time = int(-A $filename);
print "Со времени последнего чтения файла прошло $access_time дней.\n";
$ctime = int(-C $filename);
print "Со времени последнего изменения файлового дескриптора прошло $ctime дней";
if (-z $filename) { print "Файл существует и он пустой.\n"; }
if (-r $filename) { print "У меня есть право на чтение файла.\n"; }
if (-w $filename) { print "У меня есть право на изменение файла.\n"; }
if (-x $filename) { print "У меня есть право на выполнение файла.\n"; }
if (-o $filename) { print "Я владелец файла.\n"; }
if (-f $filename) { print "$filename - это обычный файл.\n"; }
if (-d $filename) { print "$filename - это каталог.\n"; }
if (-l $filename) { print "$filename - это символическая ссылка.\n"; }
if (-p $filename) { print "$filename - это FIFO.\n"; }
if (-S $filename) { print "$filename - это сокет.\n"; }
if (-b $filename) { print "$filename - это блок-ориентированное спец. устройство.\n"; }
if (-c $filename) { print "$filename - это символьное спец. устройство.\n"; }
if (-t $filename) { print "Файловый манипулятор открыт для терминала.\n"; }
if (-u $filename) { print "У файла установлен бит setuid\n"; }
if (-g $filename) { print "У файла установлен бит setgid\n"; }
if (-k $filename) { print "У файла установлен бит запрета (бит-липучка)\n"; }
if (-T $filename) { print "Это текстовый файл.\n"; }
if (-B $filename) { print "Это двоичный файл.\n"; }
$size = -s $filename;
print "Размер файла: $size.\n"; }
$modification_time = int(-M $filename);
print "Со времени последнего изменения файла прошло $modification_time дней.\n";
$access_time = int(-A $filename);
print "Со времени последнего чтения файла прошло $access_time дней.\n";
$ctime = int(-C $filename);
print "Со времени последнего изменения файлового дескриптора прошло $ctime дней";
вторник, 5 мая 2009 г.
cpan install
инсталяция модулей из CPAN
запустить шел
perl -MCPAN -e shell
поиск модуля
i /строка/
установка
install Имя_Модуля
запустить шел
perl -MCPAN -e shell
поиск модуля
i /строка/
установка
install Имя_Модуля
Подписаться на:
Сообщения (Atom)