Почему Perl-перемножение не предупреждает о undef?
Под
use strict;
use warnings;
my $foo = undef;
выражения
$foo . ''
и
"$foo"
оба производят
Use of uninitialized value $foo in ... at ...
но следующее выражение дает пустую строку без предупреждения:
$foo x 1
Кто-нибудь знает, почему? Я имею в виду, что это здорово, если у вас есть хорошая иконка стробирования ($_ x 1
намного короче defined ? "$_" : ''
), но это немного странно.
Ответы
Ответ 1
Я когда-то видел шоу со сценой в классе юридической школы. Преподаватель представил два подобных случая своим ученикам и спросил, почему они привели к различным решениям. Это потому, что решения были вынесены судьями, а судьи - это люди, в конце концов он объяснил.
Это должно предупредить. Разработчики, которые работают на Perl, являются людьми. Запустите perlbug
, чтобы отправить отчет об ошибке, если хотите.