in reply to Compare two arrays

I may be missing something but if the last line of your desired output is this1 belongs to h8this13 then it seems logical that you would also have this2 belongs to h5this21 and this2 belongs to h6this23. Anchoring the match to the end of the string drops your last desired line. Perhaps you could clarify your requirement.

use strict; use warnings; my @arr1 = qw{ this1 this2 this11 this21 this23 }; my @arr2 = qw{ h2this1 h3this2 h5this21 h6this23 h8this13 }; my @arr1Rx = map { [ $_, qr{$_\z} ] } @arr1; foreach my $e2 ( @arr2 ) { foreach my $e1 ( @arr1Rx ) { print qq{$e1->[ 0 ] belongs to $e2\n} if $e2 =~ $e1->[ 1 ]; } }

The output

this1 belongs to h2this1 this2 belongs to h3this2 this21 belongs to h5this21 this23 belongs to h6this23

I hope this is of interest.