http://www.perlmonks.org?node_id=998802


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