[Moscow.pm] Неопределённое значение, но не undef

Анатолий Гришаев 0body0 на rambler.ru
Чт Дек 26 00:32:10 PST 2013


Только, что заметил, что

foo($bar{+undef});

foo($bar{$undef});

обрабатываются одинаково.

Анатолий Гришаев.

  26.12.2013, 12:25:39 пользователь Анатолий Гришаев (0body0 на rambler.ru)
  написал:


  Но только во втором случае обращение в lvalue приводит undef к пустой строке,
  что и вызывает uninitialized warning

  а в случае foo($bar{+undef});

  подозреваю перевод undef в пустую строку сделано на этапе компиляции, поэтому
  варнинг и не выскакивает

  Анатолий Гришаев.

    26.12.2013, 12:15:02 пользователь Alexander Onokhov (ccnweb на gmail.com)
    написал:


    lvalue, присваивание которому автовивифицирует элемент хеша в обоих
    случаях передаётся.


    2013/12/26 Анатолий Гришаев <0body0 на rambler.ru>



      Во втором случае передается lvalue, при обращении к нему и вылетает
      второе предупреждение.
      Можно закомментировать строчку с $val и посмотреть.
      А значение одно и тоже undef.

      Анатолий Гришаев.

        26.12.2013, 4:32:27 пользователь Denis Ibaev (dionys на gmail.com)
        написал:

        Привет.

        Вот такой код

        sub foo { my ($val) = @_; }
        my %bar;
        my $undef;

        foo($bar{undef});
        foo($bar{$undef}); выдаст на втором вызове функции foo()
        предупреждения

        Use of uninitialized value $undef in hash element
        Use of uninitialized value within @_ in list assignment

        При этом в первом вызове массив @_ будет содержать один элемент
        со
        значением undef, точнее алиас для $bar{"undef"}. Во втором же так
        же будет один элемент и как будто undef, но, судя по
        предупреждению, не
        совсем он. Похоже, что алиас на неопределённый элемент %bar. В
        чём же
        разница этих вызовов и для чего?

        --
        Денис Ибаев
        --
        Moscow.pm mailing list
        moscow-pm на pm.org | http://moscow.pm.org

      --
      Moscow.pm mailing list
      moscow-pm на pm.org | http://moscow.pm.org



    --
    Alexander
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20131226/fa4879b1/attachment.html>


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