|
Развертывание локального Perl-репозитория CPAN (доп. ссылка 1) |
Автор: xenos8
[комментарии]
|
| Инструкция по созданию локального репозитория Perl-модулей, записанных на переносной носитель.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Как в Perl перехватить __DIE__, чтобы это не отразилось на die() внутри eval (доп. ссылка 1) |
[обсудить]
|
| Если в скрипте используется свой обработчик $SIG{__DIE__}, то он отработает и для die() внутри eval блока.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Как интегрировать функцию написанную на C/C++ в Perl скрипт. (доп. ссылка 1) |
[обсудить]
|
| Простой путь: use Inline::C, use Inline::CPP (есть также модуль Inline::ASM)
Более сложный путь: perldoc perlxs, perldoc perlxstut
|
|
|
|
|
Как получить список всех установленных Perl модулей и их версий (доп. ссылка 1) |
[обсудить]
|
| use ExtUtils::Installed;
$installed = ExtUtils::Installed->new();
foreach $module ($installed->modules()){
printf "Module: %s\t\tVersion: %s\n", $module, $installed->version($module);
}
|
|
|
|
|
Как выполнить в Perl свой код перед аварийным завершением по die(). |
[обсудить]
|
| sub die_sig{
# Случай вызова die в eval блоке.
die @_ if $^S;
# Удаляем лок.
unlink("$cfg_lock_file");
}
local ($SIG{__DIE__}) = \&die_sig;
|
|
|
|
|
Как получить имена подпрограмм Perl модуля (доп. ссылка 1) |
Автор: whirlwind.ru
[обсудить]
|
| print join("\n",&get_sub_list);
sub go{}
sub test1{}
package sublist;
sub main::get_sub_list{
no warnings;
my ($code,@fn);
foreach (keys(%main::)){
next unless /^[\w_]/;
push(@fn,$_) if eval("defined(*main::$_"."{CODE})");
}
use warnings;
@fn
}
|
|
|
|
|
Выполнение функции по ссылке или определенную как строка |
[обсудить]
|
| $func_link = sub {.......};
&$func_link(1,2,3);
test_func sub{.....};
%arr= ("test" => \&test_func);
$arr{"test"}=>(1,2,3);
$func_str = "print 'test'";
eval("$func_str");
|
|
|
|
|
Как вызвать функцию внутри строки |
[обсудить]
|
| print "текст @{[test_func()]} текст";
|
|
|
|
|
Как передать файловый дескриптор в качестве параметра функции |
[обсудить]
|
| sub test{
my $handle = shift;
while (<$handle>){
.....
};
print {$handle} "test\n";
}
open (FH, "<file");
flock(FH, 1);
test(*FH);
|
|
|
|
|
Как создать модуль и экпортировать переменные |
[обсудить]
|
| package Test;
use Exporter;
@ISA = ('Exporter');
@EXPORT_OK = ('test_func');
sub test_func {
......
}
1;
|
|
|
|
|
Как поставить обработчик вызываемый при аварийном завершении скрипта |
[обсудить]
|
| sub my_die{
.....
}
local ($SIG{__DIE__}) = \&my_die;
local ($SIG{__WARN__}) = \&my_warn;
local ($SIG{INT}) = \&my_kill;
local ($SIG{TERM}) = \&my_kill;
die "test";
|
|
|
|