With a little ambition you might have taken my example and run with it, adapting it to your needs. But here's the updated version that more closely accomplishes what you're asking, now that the details are known. Honestly, the only significant change was to how I formatted the output of the sample script. The script was already capable of handling data formatted in just about any way, so long as the formatting is accomplished with what Perl thinks of as space (\n\t\r and ' ')
use strict;
use warnings;
my $input = <<HERE;
log1 123
log1 233
log1 223
log2 465
log2 231
log2 456
HERE
my %groups;
{
my @items = split /\s+/, $input;
while ( @items ) {
push @{$groups{ +shift( @items ) }}, shift( @items );
}
}
{
local $" = "\t";
print "$_\n@{$groups{$_}}\n\n" foreach sort keys %groups;
}
__OUTPUT__
log1
123 233 223
log2
465 231 456
My second example uses a HERE doc to illustrate input in the form of a tabular list. Also, I played around with scoping a bit to keep variables confined to narrower scopes... not really necessary, but you've got to let me have a little fun with it too. ;)
If this is your first post to the Monastery, let me point out that when you post nodes, your input needs HTML-like markup, or else it will lose all formatting. Prior to your initial post being edited by a janitor (me), it was impossible to tell that your input data was in a tabular format. After adding simple code tags, it became apparent that you were presenting tabular format data. Please do read the PerlMonks FAQ for details on formatting your posts with PerlMonks HTML tags.
|