#!/usr/bin/env perl use strict; use warnings; use Inline::Files; my @file_data = map { [ do { local $/; <$_> } =~ /(\w+)/gm ] } *K1_TXT, *K2_TXT, *K3_TXT; my $glob_string = join '' => map { '{' . join(',' => @$_) . '}' } @file_data; print "$_\n" for glob $glob_string; __K1_TXT__ A1T1 A2T3 __K2_TXT__ C1G1 C1G2 C2G1 __K3_TXT__ A1C1