[Moscow.pm] keys() и разыменование undef

Denis Ibaev dionys на gmail.com
Вт Ноя 19 03:28:30 PST 2013


19 ноября 2013 г., 15:20 пользователь Oleg Alistratov <ali на ali.org.ua> написал:
> выглядит так, будто для keys() требуется, чтобы аргумент был lvalue.
> lvalue из undef автовивифицируется, это факт.
>
> Непонятно мне только, зачем аргументу keys быть lvalue?

Вероятно, за этим (perldoc -f keys):

Used as an lvalue, "keys" allows you to increase the number of hash
buckets allocated for the given hash.  This can gain you a measure of
efficiency if you know the hash is going to get big.  (This is similar
to pre-extending an array by assigning a larger number to $#array.)
If you say

    keys %hash = 200;

then %hash will have at least 200 buckets allocated for it--256 of
them, in fact, since it rounds up to the next power of two.

-- 
Денис Ибаев


Подробная информация о списке рассылки Moscow-pm