Не лучше ли использовать что-то вроде<br>my %index_sub = (<br>    generate_index   => \&generate_index,<br>    generate_index2 => \&generate_index2,<br>
    );<br><br><div class="gmail_quote">29 декабря 2011 г. 18:30 пользователь Nikolay Mishin <span dir="ltr"><<a href="mailto:mi@ya.ru">mi@ya.ru</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Митяй,<br>
<br>
наверное, мне нужно поменять/упростить<br>
архитектуру скрипта, а нужно вот для чего<br>
<br>
у меня есть несколько функций и я хочу сравнить их производительность,<br>
и, чтобы не параметризировать функцию и не писать<br>
if ($f=1){<br>
index1;<br>
}elsif($f=2){<br>
index1;<br>
}<br>
#я, используя имя функции, как передаваемый параметр, пишу<br>
my $index_func='generate_index';<br>
my $ref_index_func = \&$index_func;<br>
my $index_func2='generate_index2';<br>
my $ref_index_func2 = \&$index_func2;<br>
use Benchmark;<br>
<br>
# time 3 different versions of the same code<br>
timethese (1000, {<br>
     $index_func => _create_index($filename,$ref_index_func),<br>
      $index_func2 => _create_index($filename,$ref_index_func2),<br>
});<br>
<br>
потом я уберу эти ссылки, просто для того чтобы мнеьше переписывать удобнее<br>
было передавать имя функции как параметр,<br>
в конечном варианте останется 1 функция (наиб быстрая)<br>
<br>
29.12.2011, 18:49, "Dmitry Karpich" <<a href="mailto:meettya@gmail.com">meettya@gmail.com</a>>:<br>
<div class="HOEnZb"><div class="h5">> А, ацкая копипаста, да, Николай.<br>
><br>
> неееееТТТТТТТ..<br>
> не получается, это плохая практика.<br>
><br>
> оно будет работать только так<br>
><br>
>> sub create_index{<br>
>><br>
>>   my ($fh, $idx_file)=@_;<br>
>><br>
>>   print "create index func ZZ $fh, $idx_file\n";<br>
>><br>
>>   }<br>
>><br>
>> my $v='create_index';<br>
>><br>
>> no strict 'refs'; # or nothing worked, but when you do it some kittens die<br>
>><br>
>> &{$v}('foo','bar');<br>
><br>
> но, госспидя, не делайте так, примерно никогда или чуть реже.<br>
><br>
> Короче, глобальная мысль, думать все каникулы до просветления -<br>
><br>
>> "Функция определяет форму".<br>
><br>
> как бы прежде чем что-то сделать нужно честно ответить на вопрос "ЗАЧЕМ?". Ответ на этот вопрос в 95% случаев упрощает "КАК".<br>
><br>
> Вот скажите мне честно, нафига вам резолвить литерал? Что ценного в этом изврате?<br>
><br>
> Митяй<br>
><br>
> PS. просьба - примеры должны быть copy-past worked - вставил и запустил (ну положим что хештег у каждого свой). Ваши таким свойством не обладают. Обычно.<br>
><br>
> On Dec 29, 2011, at 4:27 PM, Nikolay Mishin wrote:<br>
><br>
>> Митяй, еще раз, привет,<br>
>> так, меня Николай зовут, но это Бог с ним,<br>
>><br>
>> классные наблы прочитал,<br>
>> получается так:<br>
>> sub create_index ($$){<br>
>>   my ($fh, $idx_file)=@_;<br>
>>   print "create index func ZZ $fh, $idx_file\n";<br>
>>   }<br>
>> $v='create_index';<br>
>> &{$v}(10);<br>
>> и ссылка не нужна, просто как параметр передаем имя функции!<br>
><br>
</div></div><div class="HOEnZb"><div class="h5">> --<br>
> Moscow.pm mailing list<br>
> <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
<br>
--<br>
Nikolay Mishin<br>
--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</div></div></blockquote></div><br>