Я предполагаю, что основная причина в том, что предварительно скомпилированные регулярные выражения на самом деле являются ссылками, а ссылки внутри одной структуры списка уплотняются как оптимизация (\ $ scalar ведет себя так же).Я не совсем вижу полезности этого (предположительно, ссылка на ссылку имеет тот же объем памяти), но, возможно, есть причина, основанная на внутреннем представлении
Причина в том, что она можетбыть ссылкой на структуру данных, которая где-то вложена и содержит ссылку на верхний уровень (цикл).Если бы он продолжал в такую структуру, то он создал бы бесконечный цикл.Чтобы избежать этого, никогда не возвращайтесь к уже увиденной ссылке, поэтому вместо этого он печатает, что уже видел ее, и отсылает вас к предыдущему напечатанному местоположению.
В этом случае петли нет, ноData :: Dumper не может знать, что до того, как он вернется в структуру, в этот момент уже слишком поздно.
Для такого скаляра это, вероятно, необязательно, но, вероятно, это происходит потому, что Data :: Dumperпроверяет, видел ли он уже ссылку, прежде чем проверять тип.Это также дает преимущество, так как показывает, что это ссылка на те же данные, а не их копия, что, возможно, является полезной информацией, которая была бы потеряна, если бы она просто напечатала значение.