When you read @DATA from your DB, you could split it up into a hash of arrays keyed on hostid...in fact, you could split all your data at this point, to avoid the split in your main loop...
foreach (@DATA) { ($hostid, $time, $get, $post, $conn) = split(/\t/); push @{$munged_data{$hostid}}, {time => $time,get => $get,post=>$post,conn=>$conn}; }
...allowing you to then do something like...
foreach my $server (@servers) { foreach(@{$munged_data{$server}}) { #do stuff with $_->{time} etc. } }
Alternatively, you could look into splitting the data when it gets written into the db in the first place if this is possible, which would presumably involve configuring whatever logging module it is you're using.

Cheers, Ben.


In reply to Re: Super Duper Inefficient by benn
in thread Super Duper Inefficient by Earindil

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.