Hello, Perl 5--

| Комментариев: 2

Сегодня открыл свой CGI-скрипт 2002 года, который до сих пор, кстати, работает, сто раз дописанный и истерзанный, но выполненный за это время 105 миллионов раз. Хочу показать тот фан, на который сегодня смотреть смешно, но девять лет назад приходилось с трудом выцарапывать из книг и интернетов.

Ввод-вывод

binmode STDIN;
binmode STDOUT;

Глобальные переменные

our $dbh;
our $sth;

Дата и время

Разбор дат после чтения из базы данных.

my ($year, $month, $day, $hour, $min, $sec) = $date =~ /^(\d{4})-?(\d\d)-?(\d\d) ?(\d\d):?(\d\d):?(\d\d)/;

Дорисовка ведущего нуля.

$mday = "0$mday" if $mday =~ /^\d$/;
$hour = "0$hour" if $hour =~ /^\d$/;
$min = "0$min" if $min =~ /^\d$/;
$sec = "0$sec" if $sec =~ /^\d$/;
return "$days[$wday], $mday-$mons[$mon]-$year $hour:$min:$sec GMT";

Сохранение даты в хеше.

%datetime = ();
($datetime{"sec"}, $datetime{"min"}, $datetime{"hour"},
 $datetime{"day"}, $datetime{"month"}, $datetime{"year"},
 $datetime{"wday"}, $datetime{"yday"}, $datetime{"isdst"}) = localtime (time);
$datetime{'month'}++;
$datetime{'year'} += 1900;

Работа со строками

Декодирование строки запроса.

sub _urldecode{
 local($val)=@_;
 $val=~s/\+/ /g;
 $val=~s/%([0-9A-H]{2})/pack('C',hex($1))/ge;
 return $val;
}

Отдельный фетиш — ручное декодирование UTF. В частности, есть такая таблица. И еще пара нетривиальных функций, которые я здесь не привожу.

sub init_utftable{
%utftable = (
  0xD020   => 0x20,
  0xD082   => 0x80,
  0xD083   => 0x81,
  0xE2809A => 0x82,
  0xD193   => 0x83,
  0xE2809E => 0x84,
  . . .
  0xD18D   => 0xFD,
  0xD18E   => 0xFE,
  0xD18F   => 0xFF);
}

Смена регистра.

sub lower_case{
  my $word = shift;
  $word =~ tr /АБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ/ абвгдеёжзиклмнопрстуфхцчшщъыьэюя/;
  return lc $word;
}

sub upper_case{
  my $word = shift;
  $word =~ tr /абвгдеёжзиклмнопрстуфхцчшщъыьэюя/ АБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ/;
  return lc $word;
}

Комментариев: 2

А перепиши его на модерн перле? Будет отличный блиц.

Комментировать

Страницы

  • img

Об этой записи

Сообщение опубликовано 08.04.2010 18:58. Автор — ash.

Предыдущая запись — REST::Client

Следующая запись — Great Circle

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.