The OpenNET Project / Index page

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

Perl

   Корень / Программисту и web-разработчику / Perl
CGI [9]
Regex (регулярные выражения) [7]
Массивы и Хэши [10]
Отладка программ на Perl [2]
Переменные в Perl [9]
Полезные подпрограммы на Perl [15]
Обработка изображений на Perl [4]
Подпрограммы для WEB [6]
Работа с сетью и IP адресами на Perl [7]
Работа со временем и датами [7]
Работа с файлами [5]
Работа с электронной почтой [6]
Функции и модули в Perl [11]

----* 10 полезных опций для написания однострочников на языке Perl (доп. ссылка 1)   [комментарии]
  В простейших случаях perl можно использовать в командной строке как замену grep и sed, например:
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Замена установленного вручную perl-модуля на версию из пакета (доп. ссылка 1)   [комментарии]
  Иногда требуется заменить ранее вручную установленный perl-модуль на его вариант, появившийся в составе дистрибутива (Ubuntu/Debian).
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Как в Debian/Ubuntu установить отсутствующий в репозитории Perl модуль   [комментарии]
 
В случае отсутствия определенного Perl модуля в стандартных репозиториях Debian
и Ubuntu, можно поставить модуль через задействования механизмов установки
модулей CPAN, но такие модули не впишутся в пакетную инфраструктуру
дистрибутива. Поэтому для установки нестандартных Perl модулей следует
использовать dh-make-perl.

Ставим пакет dh-make-perl:
   apt-get install dh-make-perl

Устанавливаем нужный Perl модуль (в примере Module::Name) из репозитория CPAN:

   dh-make-perl --cpan Module::Name --install

Например: 

   dh-make-perl --cpan HTML::CTPP2 --install

Утилита dh-make-perl сама загрузит нужный модуль, соберет его, оформит deb-пакет и установит его.

Если модуль не из CPAN, можно распаковать модуль и выполнить (--build -
сформировать пакет, но не устанавливать):

 dh-make-perl директория_с_модулем --build
 
----* Как выделить цветом определенное слово, используя "tail -f" (доп. ссылка 1)   [комментарии]
 
Пример, выделения слова Reject при просмотре хвоста почтового лога:
    tail -f /var/log/maillog |perl -p -e  's/Reject/\033\[46;1mReject\033[0m/gi;'

Если нужно не только выделять цветом, но и подавать звуковой сигнал при появлении test@test.ru:
    tail -f /var/log/maillog |perl -p -e  's/(test\@test.ru)/\033\[46;1m$1\033[0m\007/gi;'
 
----* Кратко о безопасности в CGI скриптах на Perl   [комментарии]
 
- Главное правило - всегда явно проверять все переменные полученные из внешних источников 
    (cgi-параметры, cookie, переменные окружения, имя файла и путь (при листинге директории по readdir));

- Вырезать спецсимволы в переменных используемых в сис. функциях (open(),
system(), ``) и обращениях к sql.
    вырезание: s/[^\w\d_\-.]//g или tr/;<>*|?`&$!#{}[]:'\/\n\r\0// для open(), system(), ``.
    не забывать про \0 (передают %00, который воспринимается как конец стоки)
    Пример: $var="../../etc/passwd|\0"; open(F, "/home/test/$var.txt")

- при открытии файла на чтение в open() всегда указывать "<$file";

- Осторожность при использовании переменной внутри eval() и regex (/\Q$var\E/
иначе можно подставить ?{код}).

- Нельзя проверять числовые параметры через "if ($var > 0)", так как может
пройти $var="123;somecode";
 
----* Как ограничить время выполнения Perl блока таймаутом   [комментарии]
 
use constant TIMEOUT => 1;
eval {
   local $SIG{ALRM} = sub { die "timeout during sysread\n"; };
   alarm(TIMEOUT);
   $read_flag = sysread($filehandle, $c, 1);
   alarm(0);
};
 
----* Как отключить буферизацию вывода в Perl   [обсудить]
 
$|=1;
 
----* Как писать многострочные комментарии   [обсудить]
 
код
=comment
Текст
Комментария
=cut
код
 
----* Как просмотреть руководство по конкретной perl функции   [обсудить]
 
perldoc -f имя_функции
perldoc -q слово_в_faq
 
----* Генерация выполняемого perl файла из core   [обсудить]
 
1.
  $ /usr/bin/perl -u myprog.pl
  $ undump myprog /usr/bin/perl core

2.
  $ perl -MO=Bytecompile,-ofile sourcescript

undump - http://ftp.ktug.or.kr/tex-archive/support/undump/
 
----* Как скомпилировать Perl скрипт в бинарный вид, чтобы другие не смогли увидеть исходный текст.   [обсудить]
  perlcc script.pl Подробнее, man perlcc Если perlcc выдаст ошибку, что невозможно найти DynaLoader.a, впишите в начало компилируемого файла "use DynaLoader;".
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 

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




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