If you're looking at each one and deciding to keep or toss, I think grep is the clearest for those who follow, since that's exactly what that function is for.
my @scratch= grep {$_ != $deleter } @{$self->{_fields}};
my $retval= @{$self->{_fields}} - @scratch;
@{$self->{_fields}} = @scratch;