oh,I see it finally.Thanks for everyone! 2005/11/29, John W. Krahn <[EMAIL PROTECTED]>: > Jeff Pang wrote: > > yes,John's code work well too.But I still don't know why this code > > can't run correctly: > > > > next unless /(\S+).*(\d+\.\d+\.\d+\.\d+)/s; > > > > When I run it,I get these results: > > > > 364 2.168.2.20 > > 286.4 2.168.2.21 > > 264.4 2.168.2.22 > > 138 2.168.2.23 > > 562.3 2.168.2.24 > > 80.7 2.168.2.25 > > 355 2.168.2.26 > > 266.5 2.168.2.27 > > 327 2.168.2.28 > > > > > > somethings as '19' have lost. > > That is because .* is greedy and will match everything to the end of the > string and then backtrack until (\d+\.\d+\.\d+\.\d+) matches which specifies > that the first \d+ only has to match at least one digit. > > Since the two fields start and end with digits you could do this instead: > > next unless /([\d.]+)\D+(\d+\.\d+\.\d+\.\d+)/; > > > John > -- > use Perl; > program > fulfillment > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > <http://learn.perl.org/> <http://learn.perl.org/first-response> > > >
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>