You're looking for an element of the @steps_name array within each element of the @db_description array. Try something like:
c:\@Work\Perl\monks>perl -wMstrict -le "my @db_description=( 'MOVE 3-4 STEPS TO GB FIXTURE', 'WITHIN REACH TO CHECK', 'GET BEAM', 'PUSH/PULL ( >= 30 CM)', 'BEAM 2-3 TIMES', 'MOVE 8-10 STEPS TO HOIST', ); ;; my @steps_name = ('1-2 Steps', '5-7 Steps', '8-10 Steps', '11-15 Step +s'); ;; for (my $i = 0; $i < @steps_name; $i++) { if (grep { /(?i)\Q$steps_name[$i]\E/ } @db_description) { print qq{'$steps_name[$i]' FOUND}; } else { print qq{'$steps_name[$i]' not found}; } } " '1-2 Steps' not found '5-7 Steps' not found '8-10 Steps' FOUND '11-15 Steps' not found
Update: As a general stylistic note, I would recommend a simpler Perl-style for-loop rather than a C-style loop:
Not having to worry about index increments, array accesses, off-by-one errors, etc., is helpful.c:\@Work\Perl\monks>perl -wMstrict -le "my @db_description=( 'MOVE 3-4 STEPS TO GB FIXTURE', 'WITHIN REACH TO CHECK', 'GET BEAM', 'PUSH/PULL ( >= 30 CM)', 'BEAM 2-3 TIMES', 'MOVE 8-10 STEPS TO HOIST', ); ;; my @steps_name = ('1-2 Steps', '5-7 Steps', '8-10 Steps', '11-15 Step +s'); ;; for my $s_name (@steps_name) { if (grep { /(?i)\Q$s_name\E/ } @db_description) { print qq{'$s_name' FOUND}; } else { print qq{'$s_name' not found}; } } " '1-2 Steps' not found '5-7 Steps' not found '8-10 Steps' FOUND '11-15 Steps' not found
Give a man a fish: <%-{-{-{-<
In reply to Re^7: compare individual string with complete array
by AnomalousMonk
in thread compare individual string with complete array
by rohan_532
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |