If you need to access an element by its value, then consider using a hash instead. Hashes are unordered and the keys are unique, so are not always appropriate, but your type of access is much more straightforward. It will probably be faster than searching sequentially through the array, depending on the size of the key and the exact order in the array. You can turn an array into a hash, provided the elements are unique, and delete a specific key, like this:
my %hash;
my @array = (...); # whatever
@hash{@array} = undef; # RTFM to find what this does
delete $hash{'element_value'};