Your skill will accomplishwhat the force of many cannot PerlMonks

### Answer: How do I find the Nth occurrence of a pattern?

by eak (Monk)
 on Aug 06, 2000 at 08:29 UTC Need Help??

Q&A > regular expressions > How do I find the Nth occurrence of a pattern? - Answer contributed by eak

Here is my monkified version of the nth_iter subroutine. You gotta love map{}.
```#!/usr/bin/perl -w
my @string = (34, 56, 78, 90, 98, 76, 54, 32, 10, 12, 13, 16, 19, 20,
+10, 56);

sub nth_iter{
my (\$item, \$n, \$list) = @_;
( map { \$string[\$_] == \$item ? \$_ : (); } 0..\$#string )[--\$n] or -1;
}

print nth_iter(78, 1, \@string);

Replies are listed 'Best First'.
RE: Answer: How do I find the Nth occurrence of a pattern?
by eak (Monk) on Aug 06, 2000 at 08:37 UTC
I have to correct my code. I passed in a reference and never used it :(.
```#!/usr/bin/perl -w
my @string = (34, 56, 78, 90, 98, 76, 54, 32, 10, 12, 13, 16, 19, 20,
+10, 56);

sub nth_iter{
my (\$item, \$n, \$list) = @_;
( map { \$list->[\$_] == \$item ? \$_ : (); } 0..\$#\$list )[--\$n] or -1
+;
}

print nth_iter(78, 1, \@string);
Now using grep...speeed!!
```#!/usr/bin/perl -w

my @string = (34, 56, 78, 90, 98, 76, 54, 32, 10, 12, 13, 16, 19, 20,
+10, 56);

sub nth_iter{
my (\$item, \$n, \$list) = @_;
( grep  \$list->[\$_] == \$item,  0..\$#\$list )[--\$n] or -1;
}

print nth_iter(10, 3, \@string);

Create A New User
Chatterbox?
Jar. Jar!...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (3)
As of 2017-10-17 07:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
My fridge is mostly full of:

Results (222 votes). Check out past polls.

Notices?