For this error, try something like this: Take note of any regex changes that you were advised in other emails
if ( $line =~ /AccessModes\s*=\s*.*(WebMail)*.*(POP).*(WebMail)*.*/ ) { if (defined $2 && $2 && $1 ) { print $2 . " " . $1 . $line . "\n"; } } Make sure that $2 is initialized. $2 may be defined, but not initialized. Because $2 cannot be defined if $1 is not defined, we don't need to check if $1 is defined, but we should check if it is initialized. (Note, I didn't make this my style, but I did change it a little). ## Z. Bornheimer On Sun, Dec 23, 2012 at 8:27 AM, punit jain <contactpunitj...@gmail.com>wrote: > Hi, > > I am doing grouping but seeing some weird behavior :- > > the strings in a file are like :- > AccessModes = > > (18,Mail,POP,IMAP,PWD,WebMail,WebSite,Relay,Mobile,FTP,MAPI,TLS,LDAP,WebCAL); > .... > ... > . > multiple lines > > I am seeing which lines have both POP and Webmail as below :- > > if( $line =~ /AccessModes\s*=\s*.*(WebMail)*.*(POP).*(WebMail)*.*/ ) { > if(defined $2) { > print "$2 $1"."$line"."\n"; > } > } > > > However I get these below :- > > POPUse of uninitialized value in concatenation (.) or string at > test.plline 283, <GEN85> line 2. > POPUse of uninitialized value in concatenation (.) or string at > test.plline 283, <GEN86> line 2. > POPUse of uninitialized value in concatenation (.) or string at > test.plline 283, <GEN87> line 2. > > Any clue why ? > > Regards. >