Kay Bieri <[EMAIL PROTECTED]> writes: > > Right! I have the same idea as you, and I have this : > > > > my @list = ('1234', '4567', '789A', 'BCDE', 'FGHI'); > > my $GetLocation = 0; > > my $value = 'BCDE'; > > > > for (my $atLoc = 0; $atLoc <= $#list and ! $GetLocation ; $atLoc++) > > { $GetLocation = $atLoc if ($value eq $list[$atLoc]) } > > > > And I finally got the same ans. =) > > Deal with it by a hash is the only choice.... > > > > Your script does have some problems. For instance, if the string you're > looking for is in the first (index = 0) position and also in a later > position, the for loop will only find the latter. Also if $GetLocation > stays 0, you don't know whether the string is not present in the array at > all or whether it is just in the beginning position.
Try this instead: #!/usr/bin/perl -wl my @list = qw/BCDE 1234 4567 789A BCDE FGHI/; my $value = 'BCDE'; my @locations = grep { $list[$_] eq $value } (0 .. $#list); if (@locations) { print "String '$value' found at index(es): " . join(", ", @locations); } else { print "String '$value' not found."; } display: String 'BCDE' found at: 0, 4 If you find yourself using 'for', it's often best to stop and think for a bit about a more 'perlish' way to do the same thing with map, grep, or foreach. Look to `perldoc -f grep` or the camel book for more interesting examples of grep usage. -RN -- Robin Norwood Red Hat, Inc. "The Sage does nothing, yet nothing remains undone." -Lao Tzu, Te Tao Ching -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]