Sophia, et al > If you know in advance the array index then use splice. If you know only the value you want to remove (and you like map...): #/usr/bin/perl -w use strict; my %compilers = ( system1 => ['compiler_a'], system2 => ['compiler_b', 'compiler_c','compiler_d'], system3 => ['compiler_e'], system4 => ['compiler_f'], system5 => ['compiler_g', 'compiler_h','compiler_i', 'compiler_k'], system6 => ['compiler_l'], ); my ($h, $i, $j, $k, @ok); $j = 0; show(); print "Enter the number associated with the element you want to remove\n"; while (<>) { chomp; $h = $_; unless (/\d+/) {print"Try again\n"; next} unless ($h < $j and $h >= 0) {print"Try again\n"; next} last if defined $h; } @ok = map { $_ } ( map { @{ $compilers{$_} } } keys %compilers ); map { my $key = $_; my $z = 0; map { $k = $key, $i = $z++ if $ok[$h] eq $_ } @{ $compilers{$key} }; } keys %compilers; $j = splice @{ $compilers{$k} }, $i, 1 if defined $k and defined $i; print" Element removed: $j\n"; $j = 0; show(); sub show { print map { $j++." -> $_\n" } ( map { @{ $compilers{$_} } } keys %compilers ); }
David -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]