1 -> 10, 20, 30, 40 10 -> 100, 101, 102 100 -> no data 101 -> 1011 1011 -> no data 102 -> no data 20 -> no data 30 -> 301, 302 301 -> no data 302 -> no data 40 -> 401, 402 401 -> 4011 4011 -> 40111 40111 -> no data 402 -> no data #### #!/usr/bin/perl @ini_array = (); #input file open(F,"C:/test/1.txt") or die "Can't open 1.txt file"; while() { chomp; push(@ini_array,$_); } close F; @final_array; foreach $ab (@ini_array) { push(@final_array,$ab); &common($ab); } sub common() { $fl = shift; open(A,"C:/test/$fl.txt") or die "Can't open $fl"; @sublist = ; close A; $cnt = scalar @sublist; if ($cnt > 0) { subfl(\@sublist); } else { push(@final_array,@sublist); } } sub subfl() { $arfirst = shift; @ini_array1 = @$arfirst; foreach $ab1 (@ini_array1) { chomp($ab1); push(@final_array,$ab1); &common($ab1); } }