То есть создавать ссылки на функции - плохая идея (у меня так и не заработала передача параметров) ну в общем понятно, объектов с пакетами должно быть достаточно для всяких хитростей и усложнения кода
жаль! 29.12.2011, 15:37, "Dmitry Karpich" <[email protected]>: > Исчо раз. > > sub create_index ($$){ > my ($fh, $idx_file)=@_; > print "create index func\n"; > } > > my $fh = 10; > my $idx_file = 20; > > say ' - work, but looks strange'; > my $index_func_name=\&create_index; # JUST &create_index, NOT &create_index() > !!!!! > $index_func_name->( $fh, $idx_file); > > say ' - much better'; > create_index $fh, $idx_file; # just func, don`t do that on class method > > не усложняйте себе жизнь, а? :) > > Митяй. > > On Dec 29, 2011, at 1:16 PM, Nikolay Mishin wrote: > >> Митяй, спасибо;)) книжку уже перечитываю 3-й раз, >> особенно после Рефакторинга Фаулера, у них идее пересекаются >> >> $$index_func_name->( $fh, $idx_file ); >> здесь у меня лишний доллар >> работает и так >> $index_func_name->( $fh, $idx_file ); >> но все-таки так прозрачно, как >> &$index_func_name->( $fh, $idx_file ); !! >> >> хотя так тоже работае, ок, >> тогда ответ >> &$index_func_name->( $fh, $idx_file ); !! >> >> ясно видно, что вызывается функция >> >> 29.12.2011, 15:03, "Dmitry Karpich" <[email protected]>: >>> Потому что >>> >>> my $ref_sub1=sub {print 'By '. $_[0] }; >>> sub temop_sub{ print 'Hi '. $_[0] }; >>> my $ref_sub=\&temop_sub; # !!!!! ссылка на sub а не ссылка на ее результат >>> >>> $ref_sub->(); # так - лучше всего >>> >>> &{$ref_sub1}; >>> >>> Михаил, у вас же есть подписанная Larry книга, почитайте ее :) >>> >>> Митяй >>> >>> On Dec 29, 2011, at 12:48 PM, Nikolay Mishin wrote: >>>> Hi MoscowPM >>>> >>>> my $ref_sub1=sub {print 'By '. $_[0] }; >>>> sub temop_sub{ print 'Hi '. $_[0] }; >>>> my $ref_sub=\&temop_sub(); >>>> $$ref_sub; >>>> &$ref_sub; >>>> Not a CODE reference at 11_sub_ref.pl line 5. >>>> &{$ref_sub1}; >>>> >>>> почему так? >>>> почему я не могу вызывать именованную процедуру >>>> &{$ref_sub1}; ?? >>>> ведь вызывать ссылку на код с помощью >>>> & - лучше, чем с помощью $ >>>> здесь явно показывается, что вызывается процедура >>>> >>>> Спасибо. >>>> -- >>>> Nikolay Mishin >>>> -- >>>> Moscow.pm mailing list >>>> [email protected] | http://moscow.pm.org >>> -- >>> Moscow.pm mailing list >>> [email protected] | http://moscow.pm.org >> -- >> Nikolay Mishin >> -- >> Moscow.pm mailing list >> [email protected] | http://moscow.pm.org > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org -- Nikolay Mishin -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
