in reply to
Passing regex to a subroutine
This is not exactly what you asked for but another option is to use File::Find.
#!perl;
use warnings;
use strict;
use File::Find;
my $path = 'c:\b\perlmonks\arrays';
my $regexStr = qr{([0-9])\1[0-9]*([0-9])\2};
my @files;
find( sub { !-d and /$regexStr/ and print "<$_>\n" and push @files, $F
+ile::Find::name }, $path );
print "1- $_\n" foreach glob("$path\\*");
print "2- $_\n" foreach @files;
__END__
Output:
<997882.pl>
<997882.txt>
1- c:\b\perlmonks\arrays\964788.pl
1- c:\b\perlmonks\arrays\966409.pl
1- c:\b\perlmonks\arrays\970295.pl
1- c:\b\perlmonks\arrays\997235.pl
1- c:\b\perlmonks\arrays\997829.pl
1- c:\b\perlmonks\arrays\997882.pl
1- c:\b\perlmonks\arrays\997882.txt
1- c:\b\perlmonks\arrays\fff2.txt
1- c:\b\perlmonks\arrays\junk
2- c:\b\perlmonks\arrays/997882.pl
2- c:\b\perlmonks\arrays/997882.txt