The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Полезные подпрограммы на Perl

   Корень / Программисту и web-разработчику / Perl / Полезные подпрограммы на Perl
Обработка изображений на Perl [4]
Подпрограммы для WEB [6]
Работа с сетью и IP адресами на Perl [7]

----* Perl функция для quoted-printable кодирования в соответствии с RFC2047 (доп. ссылка 1)   Автор: dev  [комментарии]
  Популярный Perl модуль MIME::Words не обеспечивает quoted-printable кодирование в полном соотвтетвии с RFC2047 (пробелы между двумя закодированными блоками недопустимы).
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Обработка иерархически связанной структуры на Perl на perl.   Автор: Andrey Karavaev  [комментарии]
  Как-то пришлось столкнуться с обработкой иерархически связанной структуры на perl. В инете есть куча разрозненной информации по этому поводу. Можно, например, воспользоваться пакетами с сайта CPAN. Но с одной стороны стрелять из пушки по воробьям ... не дело.. а с другой надо чтобы и в мозгах что-то осталось.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Как создать лок файл на Perl   [комментарии]
  Для защиты от одновременного запуска нескольких процессов, можно сделать так:
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Преобразование текста из UTF-8 в KOI8-R и обратно на языке Perl   [комментарии]
 
Преобразование из UTF-8 в KOI8-R:

   use Unicode::Map8;
   use Unicode::String qw(utf8);
   my $koi8 = Unicode::Map8->new("koi8-r");
   $koi8_string = $koi8->to8(utf8($utf8_string)->utf16);

Обратное преобразование 

   use Unicode::Map8;
   use Unicode::String qw(utf16);
   my $koi8 = Unicode::Map8->new("koi8-r");
   $utf8_string = utf16($koi8->to16($koi8_string ))->utf8; 


Другой метод:

   use Encode;
   $koi8_text = from_to($utf8_text, "utf8", "koi8-r");
   $utf8_text = from_to($koi8_text, "koi8-r", "utf8");
 
----* Симметричное шифрование блока данных на Perl.   [комментарии]
 
use Crypt::Blowfish;
use Crypt::CBC;
my $cipher = new Crypt::CBC("Секретный ключ для шифрования",'Blowfish');
my $crypted_block = $cipher->encrypt_hex($text);
my $text = $cipher->decrypt_hex($crypted_block);
$cipher->finish();
 
----* Установка русской локали в Perl скриптах.   [обсудить]
 
use POSIX qw(setlocale LC_ALL LC_CTYPE LC_NUMERIC);
use locale; # ru_RU.KOI8-R, ru_RU.CP1251, ru_RU.ISO-8859-5, ru_RU.UTF-8
my $g_setlocale_all = POSIX::setlocale( &POSIX::LC_ALL, "ru_RU.KOI8-R" );
my $g_setlocale_num = POSIX::setlocale( &POSIX::LC_NUMERIC, "C" );
 
----* Запуск ispell для проверки орфографии из скрипта (доп. ссылка 1)   [обсудить]
 
Вывести список слов с ошибками:
  cat file.txt | ispell -d russian -l
Детальный разбор ошибок с вариантами замены:
  echo file.txt | ispell -d russian -a
Для скриптов на perl рекомендую использовать модуль Lingua::Ispell.
 
----* Чем в perl лучше шифровать данные.   [обсудить]
 
Необратимое шифрование (хэш или fingerprint):
  Модули (в порядке возрастания надежности) Digest::MD5, Digest::SHA1, Digest::HMAC_MD5, Digest::HMAC_SHA1
  Пример: use Digest::SHA1 qw(sha1_base64); 
          $hash = sha1_base64("test");

Обратимое шифрование по ключу:
  Модули: Crypt::DES, Crypt::HCE_SHA, Crypt::Blowfish + Crypt::CBC
  Пример: use Crypt::Blowfish; use Crypt::CBC;
          $cipher_handle = new Crypt::CBC($encrypt_key,'Blowfish');
          $crypted_text = $cipher_handle->encrypt_hex($text);
          $text = $cipher_handle->decrypt_hex($crypted_text);

Шифрование с использованием открытого ключа: Crypt::OpenPGP, Crypt::GPG , Crypt::PGP5.
 
----* Генерация случайной последовательности символов на Perl   [обсудить]
 
sub sys_true_rand {
   my ($num_char) = @_; # Число символов в качестве параметра.                       
   my $dev_line;
   my $rand_line = "";
   open(UR,"</dev/urandom") || die "Cam't open /dev/urandom"";
   do {
        read (UR, $dev_line, 4096);
        $dev_line =~ s/[^\w\d]//g;
        $rand_line .= $dev_line;
   } until (length($rand_line) >= $num_char);
   close(UR);
   return substr($rand_line,0, $num_char);
}
 
----* Как используя Perl разбить число на триады   Автор: gr  [обсудить]
 
$num = 100000000000000; 
$num =~ s/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/$1,/g;
 
----* Как в Perl вырезать у строки лидирующие пробелы   [комментарии]
 
  $str =~ s/^\s*([^\s]?.*)$/$1/;
  $str =~ s/^(.*[^\s])\s*$/$1/; # два regex работают быстрее, чем один более сложный
 
----* Как найти подстроку находящуюся в переменной с экранированием опасных символов.   [обсудить]
 
Для экранирования спец. символов в строке подставляемой в регуларное
 выражение, строку нужно разместить между модификаторами \Q и \E,
при этом все спецсимволы не будут интерпретироваться как операторы рег. выражения.
Например: /\Q$str\E/
Или можно использовать функцию index():
$pos = index($строка, $подстрока);
if ($pos < 0){
# Подстрока не найдена.
} else {
# В $pos - позиция первой совпавшей позиции подстроки.
}
 
----* Как работать с параметрами передаваемыми в командной строке   [обсудить]
 
use Getopt::Long;
GetOptions("prefix=s", \$prefix, "prefix-man=s", \$prefix_man);
$prefix = defined($prefix) ? $prefix : $default_install_path;
$prefix_man = defined($prefix_man) ? $prefix_man : $default_install_man;
 
----* Как преобразовать число в определенный формат   [обсудить]
 
Примеры:
$a = sprintf("%4.2f",$num);
$a = sprintf("%06X%06X",$num1,$num2);
$a = sprintf("%04i",$num);
 
----* Обработка RSS и Atom лент на языке Perl   [комментарии]
  Для обработки RSS/Atom лент удобно использовать perl модуль XML::Feed, у которого есть один неприятный недостаток - необходимость установки очень большого числа зависимостей. Для работы XML::Feed во FreeBSD нужно установить около 100 дополнительных Perl модулей, не входящих в состав Perl 5.8.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 

 Версия для печати




  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor TopList