For focused advice you need to give us the bigger picture. If the search is occasional or the array is small (supply your own definition for both those) then grep is the tool of choice. If you don't care about the original order of the data and the data set is of modest size (again supply your own definition) then a hash of arrays may be appropriate. If the data size is modest (ditto) but you need order information add an ordinal along with the data value for each item (see below). If the data is large, use a database.
For the penultimate option consider:
use strict;
use warnings;
my $entries = 0;
my %data;
while (<DATA>) {
chomp;
my ($name, $value) = split ' ', $_, 2;
push @{$data{$name}}, [$entries++, $value];
}
for my $name (sort keys %data) {
print "$name\n";
print " $_->[1]\n" for sort {$a->[0] <=> $b->[0]} @{$data{$name}
+};
}
__DATA__
Jim 12
John 15
Peter 08
Andrew 34
Jim 57
Andreas 27
Prints:
Andreas
27
Andrew
34
Jim
12
57
John
15
Peter
08
Perl is environmentally friendly - it saves trees
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|