in reply to Re: How to remove the certain element of an object
in thread How to remove the certain element of an object

Dear locked_user sundialsvc4

thank you! Of course you are right. If the search element is not in the array then $idx is -1 and the subroutine just removes the last element of the array.

A quick solution could be to add the line

return @{$_[0]} if $idx == -1;

above "splice"

Here is a version which should be more readable:

sub purge_this_one { my $aref = $_[0]; my $searched = $_[1]; my $idx = first_index { $_ == $searched } @$aref; return @$aref if $idx == -1; splice( @$aref, $idx, 1 ); return @$aref; }

Thanks again!

Update:Well, it is not enough since the subroutine does not tell if it does not purge anything. It should warn at least. I take it home and try to make it better. Thank you for noticing this. Update:Removed some private lyric from the original text.