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";
};