Вам придется свернуть свой собственный анализатор потока данных. $/
не соответствует задаче:
Помните: значение $ / является строкой, а не регулярным выражением. awk должен быть лучше для чего-то. : -)
Но линия, которая заканчивается тремя штрихами и новой строкой, также является строкой, которая заканчивается двумя штрихами и новой строкой. Разве не достаточно просто поменять команду chomp
?
{
local $/ = "--\n";
while (<>) {
chomp; s/\-+$//; # chop off minimum record separator AND extra dashes
print;
}
}
или
chomp && s/\-+$//
для случая, когда последняя запись в данных не заканчивается строкой разделителя записей.