#!/usr/bin/perl use strict; use warnings; my @list = ; chomp @list; for my $pattern (@list) { # Handle the . wildcard $pattern =~ s/\./{0,1,2,3,4,5,6,7,8,9}/g; # Handle the ranges $pattern =~ s/\[([^\]]+?)\]/'{' . expand_brackets($1) . '}'/eg; # Uncomment this to see how the patterns look before being passed to glob # print $pattern, "\n"; print "$_\n" for glob($pattern); } sub expand_brackets { my $pattern = shift; $pattern =~ s/\b(\d+)\-(\d+)\b/join ',', $1 .. $2/ge; return $pattern; } __DATA__ 1115551234 111555124. 111555125[0,3-7]