I suspect the problem is not what you think it is because your code works fine with your data, for me anyway:
while(<DATA>){
if (/userName\s+:\[(..*)\]/){
$User_Name = $1;
print "User_Name before concatenation is = $User_Name\n";
$User_Name =~ s/\s+//g;
$User_Name= "'" . $User_Name . "'";
print "User_Name = $User_Name\n";
}
}
__DATA__
pid 2172 tid 3124: 160: 10110847: userName :[app@abc.com]
pid 2172 tid 3124: 160: 10110847: userName :[napp@abc.com]
pid 2172 tid 3124: 160: 10110847: userName :[12345]
pid 2172 tid 3124: 160: 10110847: userName :[app@abc_sde.com]
pid 2172 tid 3124: 160: 10110847: userName :[567890]
pid 2172 tid 3124: 160: 10110847: userName :[dfgehj]
and the output is:
User_Name before concatenation is = app@abc.com
User_Name = 'app@abc.com'
User_Name before concatenation is = napp@abc.com
User_Name = 'napp@abc.com'
User_Name before concatenation is = 12345
User_Name = '12345'
User_Name before concatenation is = app@abc_sde.com
User_Name = 'app@abc_sde.com'
User_Name before concatenation is = 567890
User_Name = '567890'
User_Name before concatenation is = dfgehj
User_Name = 'dfgehj'