November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Friday, March 2nd, 2007 02:14 pm
офигенно понятный.
Вот попробуйте, не глядя в комменты и документацию, определить, чтО делает эта конструкция
push(@foo,[@bar]);
Способа написать это понятнее я не нашел.
Friday, March 2nd, 2007 04:27 pm (UTC)
Ссылку на массив оно в массив пихает.
Remedies: пользоваться ссылками сразу.
типа, push (@$foo, $bar), where $bar = [1, 2, 3];

Либо, насколько помню, push (@foo, \@bar);

Но вообще, в перле я пришёл года два назад к идее использовать ТОЛЬКО ссылки, и $a->[]/$a->{}

Не нужно думать, и скобки очень хорошо различимы визуально.
Friday, March 2nd, 2007 04:34 pm (UTC)
\@bar делает немножко не то, что мне надо. Так у меня весь @foo окажется набитым ссылками на один и тот же @bar. А мне надо на его копии в разные моменты времени, я в него данные снаружи много раз считываю
Monday, March 5th, 2007 03:07 am (UTC)
В этом случае лучше сразу создавать анонимный массив, читать в него и присваивать потом. Меньше копирований.
Wednesday, March 7th, 2007 08:00 am (UTC)
Не надо пытаться перехитрить Perl и JavaVM... Они и так неплохо оптимизируют... В частности, в Perl не стоит избегать передач параметров в функции и обратно через списки.

А передача ссылок на хэши/списки и потом их произвольная и несогласованная их модификация в функциях - это прямой путь программистов на C создать глючную и трапающуюся в произвольные моменты программу.
Friday, March 2nd, 2007 06:58 pm (UTC)
Не ссылку, а копию, и тем-то от \@bar и отличается.
Monday, March 5th, 2007 03:10 am (UTC)
Да, протупил.