I am reading a string from a file:
2343,0,1,0 … 500 times …3
Above is an example of $_ when it is read from a file. It is any number, followed by 500 comma separated 0’s/1’s then the number 3.
while(<FILE>){
my $string = $_;
chomp($string);
my $a = chop($string);
my $found;
if($string=~m/^[0-9]*\,((0,|1,){$i})/){
$found = $&.$a;
print OTH $found,"\n";
}
}
I am using chop to get the number 3 from the end of the string. Then matching the first number followed by $i occurences of 0, or 1. The problem I’m having is that chop is not working on the string for some reason. In the if statement when I try to concat the match and the chopped number all I get returned is the contents of $&.
I have also tried using my $a = substr $a,-1,1; to get the number 3 and this also hasn’t worked.
The thing that’s odd is that this code works in Eclipse on Windows, and when I put it onto a Linux server it won’t work. Can anyone spot the silly mistake I’m making?
As a rule, I tend always to allow for unseen whitespace in my data. I find that it makes my code more robust expecting that somebody didn’t see an extra space at the end of a line or string (as in writing to a log). So I think this would solve your problem:
Of course, since you know you are looking for a number, it’s better to be more precise: