Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW

Re: perl grep with regex

by choroba (Bishop)
on Jun 30, 2014 at 12:36 UTC ( #1091707=note: print w/replies, xml ) Need Help??

in reply to perl grep with regex

It works for me:
#!/usr/bin/perl use warnings; use strict; my @arr2 = qw( mcs scr tsz unh ); my @arr1 = qw( spec.srn.1234 sepc.mcs.1234 ); for my $strfile (@arr1) { my @arr3 = split(/[.\n]/, $strfile); if (grep (/^$arr3[1]$/, @arr2)) { print "Entered in IF Loop\n"; } else { print "Entered in ELSE Loop\n"; } } __END__ Output: Entered in ELSE Loop Entered in IF Loop

Are you sure your input contains what you think? Try adding the information to the output:

if (grep (/^$arr3[1]$/, @arr2)) { print "Entered in IF Loop: /^$arr3[1]\$/ found in (@arr2)\n"; } else { print "Entered in ELSE Loop: /^$arr3[1]\$/ not found in (@arr2 +)\n"; }

Also note that I used $arr3[1] instead of @arr3[1]. warnings told me to do so.

لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

Replies are listed 'Best First'.
Re^2: perl grep with regex
by swissknife (Acolyte) on Jun 30, 2014 at 13:33 UTC

    Thank you for your response. Does it make any difference when i read arr2 from a file? (in my actual code i get this array by reading a file). i tried as you suggested and got below output.

    Entered in else loop: /^mcs$/ found in (scr mcs tsz unh )
      There's probably some whitespace at the end of the lines in the file. Remove it:
      s/\s+$// for @arr2;
      لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

        actually the space was in the beginning of line. i removed it and now it is working correctly.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1091707]
and snow settles gently...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (6)
As of 2017-10-22 17:58 GMT
Find Nodes?
    Voting Booth?
    My fridge is mostly full of:

    Results (274 votes). Check out past polls.