-----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

Reply via email to