in reply to Re^5: compare individual string with complete array
in thread compare individual string with complete array

Thank you for the time and help receiving , I am providing a sample pseudo code to get clear idea the $description$i is to be compared every time with the @steps_name array

my @db_description=("MOVE 3-4 STEPS TO GB FIXTURE","WITHIN REACH TO CH +ECK","GET BEAM","PUSH/PULL ( >= 30 CM)","BEAM 2-3 TIMES","MOVE 8-10 S +TEPS TO HOIST"); my @steps_name = ("1-2 Steps", "5-7 Steps", "8-10 Steps", "11-15 Steps +"); for(my $i=0;$i<@db_description;$i++) { if (grep { /(?i)\Q$db_description[$i]\E/ } @steps_name) + { print "<br><h1>Element '$db_description[$i]' foun +d " ; } else { print "<br>$db_description[$i] not found </br>" } }

thank you for the patience

update - i want description array to iterate and check in @steps_name array every time for that i am using grep { /(?i)\Q$db_description$i\E/ } @steps_name.

Replies are listed 'Best First'.
Re^7: compare individual string with complete array
by AnomalousMonk (Archbishop) on Jun 01, 2017 at 06:47 UTC

    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:

    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
    Not having to worry about index increments, array accesses, off-by-one errors, etc., is helpful.


    Give a man a fish:  <%-{-{-{-<

Re^7: compare individual string with complete array
by thanos1983 (Parson) on Jun 01, 2017 at 08:14 UTC

    Hello rohan_532,

    Now this is a proper explanation and example that we can work with ;) (Good Job :D)

    Monk AnomalousMonk has already provide you 2 answers so I assume your question can be considered closed. :D

    Let us know if you have any further questions. :D

    Seeking for Perl wisdom...on the process of learning...not there...yet!
      Thank you All for the help, Solution worked .