in reply to check 2 string arrays

The short answer is that you should not use the \b anchors in this case; just remove them from your regex.

Here is a more Perl-ish way to code this up:

use strict; use warnings; my @array1 = qw( abc_RCF_BM_allocation_0_kl aplc_RCF_BM_allocation_0_in_nml fbe_RCF_BM_allocation_0_in_tvg ap_hu_BM_allocation_0_in_nml ); my @array2 = qw( RCF_BM_allocation_0_in BM_allocation_0 RCF_BM_allocation_0 ); for my $i (0 .. $#array1){ for my $j (0 .. $#array2){ if ($array1[$i] =~ /$array2[$j]/) { print "$array1[$i] contains $array2[$j]\n"; last; } } } __END__ abc_RCF_BM_allocation_0_kl contains BM_allocation_0 aplc_RCF_BM_allocation_0_in_nml contains RCF_BM_allocation_0_in fbe_RCF_BM_allocation_0_in_tvg contains RCF_BM_allocation_0_in ap_hu_BM_allocation_0_in_nml contains BM_allocation_0

Replies are listed 'Best First'.
Re^2: check 2 string arrays
by sharan (Acolyte) on Mar 31, 2009 at 13:15 UTC
    Hi Toolic,
    I tried with if ($array1[$i] =~ /$array2[$j]/) But i still have some error.e.g. it shows 2 outputs for some strings
    abc_RCF_BM_allocation_0_kl contains BM_allocation_0 abc_RCF_BM_allocation_0_kl contains RCF_BM_allocation_0 aplc_RCF_BM_allocation_0_in_nml contains RCF_BM_allocation_0_in aplc_RCF_BM_allocation_0_in_nml contains BM_allocation_0
    Still i didnt get what could be the problem.

      Note the 'last;' in toolics version of the search loop. That makes sure that the loop stops as soon as the first solution is found.

      After that the only thing left to do is to order array2 so that the first found solution is always the one you want