in reply to searching array of arrays

Why not think about using a hash of arrays, rather than an array of arrays? That way you could get at each record quickly and easily.

You could populate it something like this:

my %names; while (<>) { chomp; my @line = split /\|/; next unless defined $line[2]; $names{$line[0]} = [@line[1,2]]; }
and you would get the values for a particular record like this:
print "values for bill: $names{'bill'}->[0] , $names{'bill'}->[1]";
and change them like this:
$names{'bill'}->[0] = 3;
(NB: Of course, this solution is no good if you have any duplicate names)

hth, andy.