in reply to matching substrings on each line

Is this what you are looking for?

#!/usr/bin/perl use strict; use warnings; use v5.10; my @data = <DATA>; foreach (@data) { my ($left, $right)=split' ',$_; my @l=split'(?<=-)',$left; foreach (@l) { say $_." is in ".$right if index($right, $_) > 0; } } __DATA__ a_12_3_5- k_3_4_6-a_12_3_5- q_1_5_7_9- q_1_5_7_9- a_9_4_5-c_3_4_6- c_3_4_6-r_4_5_7- b_1_1_3- v_1_5_7- d_12_4_5-e_4_5_6- g_5_6_7-d_6_8_6- b_1_1_7-f_3_8_7_8-d_4_1_4- d_4_1_5-b_1_1_7-f_3_8_3 b_1_1_7-f_3_8_7_8-d_4_1_4- e_3_3_1-f_3_8_7-f_21_3_1-b_1_1_7-a_1_1_1-

Result

perl "F:\perl_TK\perldb\perl1data3.pl" Process started >>> a_12_3_5- is in k_3_4_6-a_12_3_5- b_1_1_7- is in d_4_1_5-b_1_1_7-f_3_8_3 b_1_1_7- is in e_3_3_1-f_3_8_7-f_21_3_1-b_1_1_7-a_1_1_1- <<< Process finished. ================ READY ================