wenn eine regex nicht matcht, ist der erste schritt immmer, sicherzustellen, dass in der variable auch das drin ist, was du erwartest.
siehe dazu auch
VariablenInhalt
du iterierst also über @lines_in und matchst auf /^--[\s\n]/
\s enthält übrigens schon das \n, so dass das überflüssig ist.
um genau zu sehen, was in $_ drinsteht, machst du:
use Data::Dumper;
local $Data::Dumper::Useqq = 1;
print Dumper $_;
und dann schauen, was der output ist.
dann kommt vermutlich heraus, dass was anderes drinsteht als du erwartest.