I have an issue while parsing strings which are in variable. I have a text file containing machine names and I'm reading the text file line by line. When I am trying to parse these machine names, somehow it's not working properly. e.g. In my text file I have machine names as machine1, machine11, machine12, machine2, machine20, machine23, machine30 (ef0a-14f09a-dfe230d-ea5f8d), etc. So when I parse for machine11, the code still matches machine1 and not machine11. Also I have used \Q and \E to escape special character sequences. I tried to use \b in combination with it to resolve the issue but it did not work.
my $machine = shift @_; foreach my $line (sort @::Lines){ if($line =~ m/\Q$machine\E\b/){ print "MACHINE = $machine \n"; } }
$machine is taken from the array which contains machine names. @::Lines is the array which looks like this.
\\hostname\Cpu(123:machine1)\%Ready
\\hostname\Cpu(3545:machine11)\%Used
\\hostname\Memory(3244:machine30 (ef0a-14f09a-dfe230d-ea5f8d))\Swapped MBytes
I have used \Q and \E in parsing because sometimes my machine names contain special characters like -,( , ) and :
Can we use \Q, \E and \b in combination with each other? Because if I simply use only \Q and \E, it doesn't work for machine names like machine1, machine11,etc and when I use \b with \Q and \E, it doesn't work for machine names like machine30 (ef0a-14f09a-dfe230d-ea5f8d).
Any idea on how can we parse this kind of patterns where we are using variable names ?
Thanks
In reply to Parsing Issue while using Variable name in Pattern by perlavi
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |