Подтвердить что ты не робот

Почему Perl-перемножение не предупреждает о undef?

Под

use strict;
use warnings;
my $foo = undef;

выражения

$foo . ''

и

"$foo"

оба производят

Use of uninitialized value $foo in ... at ...

но следующее выражение дает пустую строку без предупреждения:

$foo x 1

Кто-нибудь знает, почему? Я имею в виду, что это здорово, если у вас есть хорошая иконка стробирования ($_ x 1 намного короче defined ? "$_" : ''), но это немного странно.

4b9b3361

Ответ 1

Я когда-то видел шоу со сценой в классе юридической школы. Преподаватель представил два подобных случая своим ученикам и спросил, почему они привели к различным решениям. Это потому, что решения были вынесены судьями, а судьи - это люди, в конце концов он объяснил.

Это должно предупредить. Разработчики, которые работают на Perl, являются людьми. Запустите perlbug, чтобы отправить отчет об ошибке, если хотите.