my @parts = $ARGV[0] =~ /^(\w+)%(\d+)d[.](\w+)$/;
$parts[1] =~ s/^0*//;
my $re = qr{(?x: ^ $parts[0] \d{$parts[1]} [.] $parts[2] $ )};
my $glob_str = "$parts[0]*.$parts[2]";
print for grep { /$re/ } glob $glob_str;
####
$ ls -1 Img*
Img.png
Img.svg
Img0000.png
Img1.png
Img12.png
Img123.png
Img1234.png
Img12345.png
Img1239.png
####
#!/usr/bin/perl -l
use strict;
use warnings;
print 'Command line arg:';
print $ARGV[0];
my @parts = $ARGV[0] =~ /^(\w+)%(\d+)d[.](\w+)$/;
print "Parts: @parts";
$parts[1] =~ s/^0*//;
print "Parts (after stripping zeros): @parts";
my $re = qr{(?x: ^ $parts[0] \d{$parts[1]} [.] $parts[2] $ )};
print "Filter RE: $re";
my $glob_str = "$parts[0]*.$parts[2]";
print "Glob string: $glob_str";
print 'Found files:';
print for grep { /$re/ } glob $glob_str;
####
$ pm_1195222_fmt_glob_re.pl 'Img%04d.png'
Command line arg:
Img%04d.png
Parts: Img 04 png
Parts (after stripping zeros): Img 4 png
Filter RE: (?^:(?x: ^ Img \d{4} [.] png $ ))
Glob string: Img*.png
Found files:
Img0000.png
Img1234.png
Img1239.png
####
$ pm_1195222_fmt_glob_re.pl 'Img%03d.png'
Command line arg:
Img%03d.png
Parts: Img 03 png
Parts (after stripping zeros): Img 3 png
Filter RE: (?^:(?x: ^ Img \d{3} [.] png $ ))
Glob string: Img*.png
Found files:
Img123.png