The tool that was the original inspiration for Perl, awk, points to what might be a good, generalized way to approach this problem.
Consider the inputs that you have, one line at a time. Each line of data is recognizable as being of a particular type, by conforming to some pattern. For each line-type, the “interesting bits” can also readily be found by a line-type specific regular expression. You can see that this sort of problem could be described in terms of a list of regular-expressions which are to be tested one-by-one (thus identifying the line type), with a short block of code to describe what to do with each one. Which is exactly the approach that awk does take, and which a Perl program also can take.