http://qs1969.pair.com?node_id=514155

matt.tovey has asked for the wisdom of the Perl Monks concerning the following question:

This is somewhat embarassing, since I'm sure the answer to this question is to be found in many good perl books. But I suspect the answer is probably pretty simple to someone who has the "perl mentality", so I'm hoping your replies will aid me in gaining said mentality. I used to program Tcl, and since changing to perl, often find myself wanting an 'lsearch' function. I tend to add it so:
sub lsearch { my $item = shift; my @array = @_; foreach (0..$#array) { if ($item eq $array[$_]) { return $_; } } return ""; } # Want to remove $item from @list unless (my $index = lsearch($item, @list) eq "") { splice(@list, $index, 1); }
I think that in some cases where I used to use 'lsearch', I could now be using 'grep', but what do you do when you want the index of an item in your list? Or do you just program to avoid such cases?