in reply to how to reg-exp match across multiple lines?

The primary problem is that you're only reading one line from the file at a time. That's why it breaks for multi-line entries. You have a couple of solutions:
# read the whole file at once # XXX: updated (thanks, jmcnamara and VSarkiss) { local $/; $file = <IN>; } @titles = $file =~ /_\[\d]([^_]*)/g;
or you could employ some logic:
# read more lines as needed while (<IN>) { if (/_\[\d]([^_]*)_/) { push @titles, $1; } elsif (/_\[\d]([^_]*)/) { push @titles, $1; while (<IN>) { if (/([^_]*)/) { $titles[-1] .= $1 } last if /_/; } } }
I think the first approach is easier to understand, generally.

_____________________________________________________
Jeff[japhy]Pinyan: Perl, regex, and perl hacker, who'd like a job (NYC-area)
s++=END;++y(;-P)}y js++=;shajsj<++y(p-q)}?print:??;