Полагаю, вы ожидаете эту строку
local $/ = "";
чтобы изменить поведение
<DATA>
чтобы продолжить чтение до конца данных.
Но на самом деле требуется что-то вроде этого
{
local $/; # $/ becomes undef in this block
...
}
для включения режима slurp (и для помещения этого режима в область видимости внутри {curlys}).
По сути, он говорит: «забудьте о том, чтобы думать о новых строках как о маркере конца записи»,
Кроме того ... в вашем коде есть боец связи
while( <DATA> ) {
print "\n-------------------------\n\n";
print;
<>; # <-- Feel the power of the DARK SIDE!!!
}
Этот маленький парень будет читать из STDIN, а не из DATA - это действительно то, что вы хотите?