> I have some data that needs to be split up alphabetically into lists
> that start with each letter of the alphabet. Sample data is like the
> following with real URL data in place of URL1 and URL2. Only
> the first
> field is important for alphabetizing. If I do an array with
> each letter
> (and it can be assumed that it will always start with a
> capital letter),
> how can I do something like the following?
>
> foreach $letter (@alphabet) {
> if firstchar of $data = $letter {
> push @{"$letter"}, $data
> }
> }
>
> sample data:
>
> Psychology|URL1|URL2|
> Notes and Queries|URL1|URL2|
> ACM|URL1|URL2|
> Biology|URL1|URL2|
use strict;
use warnings;
use Data::Dumper;
my %data;
while(<DATA>)
{
chomp;
my ($str, @rest) = split /\|/;
# use 'lc substr...' if you want case
# insensitivity
my $letter = substr $str, 0, 1;
$data{$letter}{$str} = [EMAIL PROTECTED];
}
print Dumper(\%data);
__DATA__
Psychology|URL1|URL2|
Notes and Queries|URL1|URL2|
ACM|URL1|URL2|
Biology|URL1|URL2|
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>