{ my %replace; sub glob_to_regexp { my $pattern = shift; %replace or %replace = ( '*' => '.*', '?' => '.' ); $pattern =~ s/(\W)/ $replace{$1} || quotemeta($1)/ge; return qr/^$pattern\z/; } }