package RegexInput; sub new{ my ($class,$file)=@_; my $fh; open $fh,$file; my $self = { FH=>$fh, leftover=>"" }; bless $self,$class; } sub get_line{ my $self=shift; my $regex=shift; my $fh=$self->{FH}; my $string=$self->{leftover}; while (<$fh>) { $string.=$_; if ($string=~/$regex/s) { $self->{leftover}=$'; return $string; } } $self->{leftover}=""; return $string; } package main; my $buf = new RegexInput($0); while (my $line=$buf->get_line(qr/\n\}/)) { print $line,"\n","="x50,"\n"; }