my @strings = ( 'Abcderd', 'dkdnnjn', 'ddjfdjk', 'c,oktnx', ); my $mask = '0100110'; my $regex = '^' . join('', map { $_ ? '(.)' : '.' } split //, $mask) . '$'; foreach my $string (@strings) { my $result = join '', ($string =~ m/$regex/o); print $result, "\n"; }