Assume we represent a set by an array in Perl (so strictly speaking it is not merely a set but an ordered set). Now given an item, how to check if it is in the set or not?

In Perl, there is a very powerful command, grep, that can do this job. Assume a set is represented by @prime, to check if item $num is in the set, we can use this grep {$_ == $num} @prime;  If it returns a non-empty array, then it is; otherwise, no. Further, if we not only want to know whether it is in the set, but also where of the set, we can make it a bit more complicated, like this grep {$prime[$_] ==$num} (0..@#prime);


The following demonstrate this idea:

#!/usr/bin/perl
# Test for set's is-in operation using grep
# Output:
#    11 is a prime, at index 4
#

my @prime = (2, 3, 5, 7, 11, 13, 17, 19, 23, 31);
my $num = 6; my @a = grep {$prime[$_] ==$num} (0..$#prime); foreach (@a) { print "$num is a prime, at index $_\n"; };$num = 11;
@a = grep {$prime[$_] == $num} (0..$#prime);
foreach (@a) {
print "$num is a prime, at index$_\n";
};