Sara <[EMAIL PROTECTED]> wrote:
: 
: An input string like;
: 
: $name_with_id = "Deiley, Sara Jr., 1234";
: 
: another example could be
: 
: $name_with_id = "DEILEY SARA, Jr,. 123";
: 
: Two things are for sure in it always.
: 
: 1- First part contains the alphabets (caps or small) with any 
: number of commas and periods (full stops) in between or at the end.
: 
: and then always a white space, followed by:
: 
: 2- the last part contains the digit/number which could be 2 - 
: 5 digits long.


: I am trying this;
: 
: $name_with_id = "Deiley, Sara Jr., 1234";
: 
: split (/[^\d]+/, $name_with_id) = ($name,$id);

    [^\d]+ will match anything that is *not* a
digit. and appears more that one time in the
search string. In our example string, it splits
on: "Deiley, Sara Jr., ". All of which is not a
digit.

    To find the last part we could use: \d{2,5}
William of Occam gave pretty good advice:
"Entities should not be multiplied unnecessarily."

 
: print "name: $name and ID: $id";
: 
: Error: Can't modify split in scalar assignment at line 3;

    Unlike 'substr', split can only be on the right
side of an equation. If you set split equal to
something, you'll get the error above. So this
would seem more logical:

my ($name,$id) = split (/\d{2,5}/, $name_with_id);

    The problem is that split discards the
part we're looking for: \d{2,5} unless we
place it in parenthesis.

my( $name, $id ) = split / (\d{2,5})/, $name_with_id;

    This should throw away the space and keep the
digits:

use strict;
use warnings;
use Data::Dumper;

my $name_with_id = "Deiley, Sara Jr., 1234";

print Dumper [ split / (\d{2,5})$/, $name_with_id ];

__END__

HTH,

Charles K. Clarkson
-- 
Head Bottle Washer,
Clarkson Energy Homes, Inc.
Mobile Home Specialists
254 968-8328






-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to