List::Member - PROLOG's member/2: return index of $x in @y.


List-Member documentation Contained in the List-Member distribution.

Index


Code Index:

NAME

Top

List::Member - PROLOG's member/2: return index of $x in @y.

SYNOPSIS

Top

  use List::Member;
  my $target = 'bar';
  my @look_in = ('foo','baz','bar','etc');

  warn "It is a member of the list" if member('bar',@look_in) +1;
  warn "It is a member of the list" if member('bar',@look_in) >= 0;
  warn "It is a member of the list" if member(qr/ar$/,@look_in) +1;

  warn "It is not a member of list" if member('tikkumolam',@look_in) eq nota_member();

DESCRIPTION

Top

A tiny routine to achieve the same effect as PROLOG's member/2.

Returns the index of supplied scalar in supplied array, or returns the value of the package's $NEG scalar. This can be over-ridden for the case when the target is the same as the default -1:

	$List::Member::NEG = 'not_a_member';

In the above case, the first two example calls in the POD would need to be updated.

EXPORT

Top

	member

CHANGES

Top

In version 0.02, member returned undef but documented -1. The documentation was correct, and the code has been updated.

THANKS

Top

Thanks to Benoit Thillaye du Boulay in France, John Day and Michael D Black in Florida for pointing out bugs in the documentation.

AUTHOR

Top

Lee Goddard <lgoddard@cpan.org>

LICENCE AND COPYRIGHT

Top

SEE ALSO

Top

perl(1).


List-Member documentation Contained in the List-Member distribution.

package List::Member;

require 5.005_62;
use strict;
use warnings;
use Carp ();

require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(&member &nota_member);
our $VERSION = '0.044';
our $NEG = -1;

sub nota_member { return $NEG }

sub member {
	my $target = shift;
	Carp::croak 'No target in member/2 ' unless defined $target;
	if (ref $target eq 'Regexp'){
		for (0..$#_){
			return $_ if $_[$_] =~ $target;
		}
	} else {
		for (0..$#_){
			return $_ if $_[$_] eq $target;
		}
	}
	return $NEG;
}

1;

__END__