-----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Luke Bakken Sent: Tuesday, May 02, 2006 6:16 AM To: Timothy Johnson Cc: perl-win32-users@listserv.ActiveState.com Subject: Re: Easy One
>> >> I have a string, "$a" for arguments sake, that contains a >> single >> >> word. The word will always have exactly 8 characters in it, most >> likely >> >> something like "ABCD1234". I need to split this up into two strings >> ($b >> >> <snip> >> >> > >> >if (length $string == 8) # might as well check eh? >> >{ >> > $string =~ /^([^\d]+)(.*)$/; >> > my ($characterString, $numberString) = ($1, $2); >> >} >> >> >> There is one potential problem with this algorithm, which is that you >> aren't checking to make sure that the string actually matches your >> regex. This can result in $1 and $2 containing the values from the last >> string that worked instead of being blank or failing, which can be hard >> to track down when you start getting different values than what you >> expected. >Maybe you're used to some old behavior in Perl, but that doesn't >appear to be the case in 5.8.8 at least. I get this output: <snip: output that proves me wrong> Ah. Okay, I see why that worked now. $1, $2 et al are scoped to the current block, so in this case you are right. If you were to do two pattern matches within the same block, though, you would see the behavior I described. _______________________________________________ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs