Ответ 1
Цитировать man perlop:
Если шаблон оценивает пустую строку, последний успешно вместо этого используется обычное выражение.
Попробуйте вставить одно успешное соответствие регулярному выражению перед второй заменой, чтобы увидеть, что происходит:
(my $foo = '1') =~ s/1/x/; # successfully match "1"
$number =~ s///g; # now you’re deleting all 1s
say "B: <$number>"; # <0000>
Id говорит, что это должно быть устаревшим и предупреждаемым о use warnings
, его трудно увидеть преимущества.