in reply to Creating dynamic hash names

Extend on this principle,if you know beforehand the variables for each column it'd be easier to implement.
This code treats the first entry in the database row as the key which when incorporated into a hash would serve to represent an anonymous array of the rest of the line in that entry, this array would be the value for that key.
use strict; use warnings; my %database; my ($id,$user,$password,$display); while(<DATA>){ chomp; ($id,$user,$password,$display)=split /\|/; $database{$id}=[] unless exists $database{$id}; #avoid prim +ary key duplications. push @{$database{$id}}, ($user, $password,$display); } foreach my $id (sort keys %database){ print "ID $id:\nINFO: @{$database{$id}}\n"; print "\n"; } __DATA__ UserID001|username1|password1|displayname1| UserID002|username2|password2|displayname2| UserID003|username3|password3|displayname3|
#OUTPUT: ID UserID001: INFO: username1 password1 displayname1 ID UserID002: INFO: username2 password2 displayname2 ID UserID003: INFO: username3 password3 displayname3

Excellence is an Endeavor of Persistence. Chance Favors a Prepared Mind.