http://www.perlmonks.org?node_id=193385


in reply to regex negative numbers

To summarize: the problem is in the pattern, (or in the fact that you didn't check if the pattern mached at all).

I've changed three things about the pattern:

  1. ? instead of {0,1}
  2. ^ just once
  3. \d+ instead of \d*
  4. discarded the /m at the end
while (<DATA>) { chomp; print "Test case '$_'\n"; if ( m!^(-?\d+)\s+(-?\d+)! ) { print "$_, " for ($1 .. $2); } else { print "doesn't match"; } print "\n\n"; } __DATA__ 1 6 -4 6 -4 -1 6 1 6 -4 -1 -4

making the program count *backwards* is left as an exercise to the reader.

--
Brigitte    'I never met a chocolate I didnt like'    Jellinek
http://www.horus.com/~bjelli/         http://perlwelt.horus.at