<>
- невероятно разборчивый оператор, который делает две совершенно разные вещи, основываясь исключительно на точном синтаксисе того, что в скобках.< PARSED >
(с дополнительными пробелами) является glob ("PARSED"), а не readline (PARSED), поэтому ваш массив просто получает единственную строку "PARSED".
(Предполагается, что ваш опубликованный код является точным;это действительно помогает, если вы копируете и вставляете свой фактический неработающий код, а не перепечатываете его части; это еще больше помогает, если ваш код с копированием и вставкой может выполняться точно так же, как для демонстрации вашей проблемы.)
Обратите внимание, что:
use warnings;
open(PARSED, "< filename") or die $!;
my @lines = < PARSED >;
предупредит вас, что PARSED используется только один раз, что является большой подсказкой о том, что <>
не делает то, что вы думаете.