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


in reply to Re^2: Null scalars in array
in thread Null scalars in array

Your "nulls" weren't nulls at all. They arn't spaces either. They are just cases where your regex didn't match, so it didn't return anything. + Requires at least one occurence of the thing it is quantifiying. So if you say "A B" =~ /A(.+?)B/ you'll get a hit, because there is at least one thing between the A and B. If you do "AB" =~ /A(.+?)B/ it wont match because there isn't at least one thing between A and B. * however matches 0 or more things, so it would match in both cases.

use strict; use warnings; print "A-B =~ /A.+B/ --> "; print "worked" if "A-B" =~ /A.+B/; print "\n"; print "A-B =~ /A.*B/ --> "; print "worked" if "A-B" =~ /A.*B/; print "\n"; print "AB =~ /A.+B/ --> "; print "worked" if "AB" =~ /A.+B/; print "\n"; print "AB =~ /A.*B/ --> "; print "worked" if "AB" =~ /A.*B/; print "\n";
Outputs:
A-B =~ /A.+B/ --> worked A-B =~ /A.*B/ --> worked AB =~ /A.+B/ --> AB =~ /A.*B/ --> worked

___________
Eric Hodges