пишу модульу меня есть допустим передается какой-то метод
$self->valid_idкак мне узнать название которое идет после $self->...?
можно ли это получить?
>есть допустим передаетсяЭто ты мощно завернул. Иди деточка в школу, пусть тебя там научат выражать свои мысли понятным для всех языком.
Хотя если виной всему вещества, то подожди пока попустит, перечитай заново бред, который ты запостил, и скажи "нет" веществам.
я не правильно задал, извенитено вот тут нашел http://www.opennet.me/tips/info/415.shtml
я в гугле набрал но ничего не нашел про main функцию
кстате. подскажите... я пишу классы у меня штук 30-40 класво всегоиспользовал в них почти всегда полиморфизм (псевдо-класс SUPER или next)
подскажите можно ли как-то определить в index.pl в пусковом файле все методы какого-то класса?
и загрузить их по очереди их и какие-то другие (те которые надо, допустим) ....то есть такой dispatcher как в catalyst?
никто не использовал?
мне надо было определить функцию вложенности(caller(1))[3]
1 - это функция от куда была вызвана, 0 - ваша функция
3 - функцию надо
Если я смог правильно понять что вы хотите, то вот переделка get_sub_list для выдачи функций из любого namespace, в примере DBI.
#!/usr/bin/perl
use DBI;
print join("\n",&get_sub_list('DBI'));
sub get_sub_list{
my $m=shift;
no warnings;
my ($code,@fn,@a);
print $m;
eval('@a=keys(%'.$m.'::);');
foreach (@a){
next unless /^[\w_]/;
push(@fn,$_) if eval('defined(*'.$m.'::'.$_.'{CODE})');
}
use warnings;
@fn
}
Как легко догадаться вместо DBI можно использовать любой модуль.main:: это namespace основной программы, он используется неявно, если не указан другой посредством package.
спасибо, да, именно этоа как управлять лкссамаи, кто как управлял классами?
целесобразно ли так писать?
ПРИМЕРНО:
use MyPr::Form::Bla-bla;
use MyPr::Valid::Bla-bla;
use MyPr::Session::Bla-bla;
use MyPr::Bla-bla::Bla-bla;
всего 30-40
...............................
if (defined $param->{form} ) {my @m = join("",&get_sub_list('MyPr::Form::'.$param->(form)));
if (defined @m) {
my @vm = join("",&get_sub_list('MyPr::Valid::'.$param->(form)));
foreash (@vm) {
my $obj = 'MyPr::Valid::'.$param->(form)->new($param);
$obj->$_();
}}
foreash (@m) {
my $obj = 'MyPr::Form::'.$param->(form)->new();
$obj->$_();
} else {
if ($param->{global-bla}) {my @mb = join("",&get_sub_list('MyPr::Bla-bla::'.$param->(form)));
foreash (@mb) {
my $obj = 'MyPr::Bla-bla::'.$param->(form)->new();
$obj->$_();
}
}