while (my $line = <$fh>) { if ($line =~ tr/"//) { # This block will be executed if there is exactly one double-quote in the line while (1) { my $nextline = <$fh>; die unless defined $nextline; $nextline =~ s/^\s+/ /; # remove indent $line .= $nextline; # join lines break if ($nextline =~ tr/"//) % 2 == 1; } } # now parse the $line just like you would normally do using the code that you did not show us ;-) parse_line(); }