I'm not familiar with a lot of the data sources that you're referring to, but in my own experience, when the task is primarily a matter of integrating pieces of information from a diverse set of sources, the aspect of Perl that seems to help most and make things easiest (once it's understood) is data structures.
Start with the perldsc manual: Perl Data Structures Cookbook. Get well-enough acquainted with the concept of references (scalar values used as "pointers" to other things) and the somewhat grotty syntax involved, then start playing with arrays of hashes, hashes of arrays, etc. Don't be shy -- you really can manage some pretty complex stuff, and once you get the hang of it, it can be surprisingly simple.
The important thing to keep in mind as you go down that path is: know what sort of structure will make the most sense in terms of the desired output, and have that structure in mind (in fact, document that structure) before you start writing any code.
Then look at each of the inputs you'll be using to populate the structure. As mentioned in previous replies, address each data source as its own little task (taken by itself, it will tend to be pretty simple), and the goal of each task is simply to grab the relevant chunks of data for your structure and stick them in.
Once you've gone through all the inputs, reporting the final results will be astonishingly simple, because your data structure will have been designed specifically for that purpose!
For example, if the goal is to list IP addresses that may have become "belligerent" from infection, your first input would be something that provides the list of active (potentially suspect) addresses; let's suppose these become hash keys. Then you might need two or three other forms of basic information for each address (hostname, location, etc) -- these become second-level hash keys in an HoH structure.
Maybe there will be current and recent "snapshot" data (packets sent per unit time or whatever) -- that could be an array, so one of your sub-hash-keys holds an array (making it HoHoA where the second-level hash key is "packetcounts" or whatever).
Finally, when all the information is in, all that's left to do is decide which hosts to flag as belligerent, based on assessments of the various inputs. Writing the decision logic here should be fairly easy, because all the data you need is organized into a coherent and appropriate structure.
Along the way, you'll also appreciate getting familiar with the perl debugger (running the script with "perl -d"), and with Data::Dumper.
BTW "grepp" was designed as a command-line utility to do just a few things that the standard unix "grep" doesn't do well or at all (the many nifty extras in perl regexes, anything other than "\n" as the input record separator, and flexible handling of non-ASCII characters in patterns and data). If you think you need that extra nifty-ness and flexibility, just work it into your own perl code -- don't use grepp directly -- and save yourself the expense (and probable grief) of launching an unnecessary sub-shell.