On Jun 29, Babale said:

>I'm  trying to print the content of a variable only if it contains three
>digits (1 2 3) and blank in between. Can anyone feature out why I don't
>get the right result with both expressions?

>@clean = split (/ +/, $clean);
> $arrlength = @clean;
> $cleanprint = join(" ", @clean);

This is kinda silly-looking.  You don't NEED to squash multiple whitespace
to just one, do you?  All that's doing is changing "12  45    78" into "12
45 78".

> print INPUT ("$cleanprint") if  ($result = $cleanprint =~
>/([\d]{1,2}])(\s)\1\2\1/);

First, [\d] should just be \d.  Second, you have an extra ] in there.
Second, it's requiring that the SAME digits be matched.  That is, if it
were written as

  /(\d{1,2})\s\1\s\1/

it would only be able to match things like "1 1 1" or "42 42 42", where
the number must be the same each time.  Also, the {1,2} is allowing it to
match TWO digits.  You said you wanted THREE digits.

I would suggest the following regex:

  /\d\s+\d\s+\d/

Ta da.

-- 
Jeff "japhy" Pinyan      [EMAIL PROTECTED]      http://www.pobox.com/~japhy/
RPI Acacia brother #734   http://www.perlmonks.org/   http://www.cpan.org/
<stu> what does y/// stand for?  <tenderpuss> why, yansliterate of course.
[  I'm looking for programming work.  If you like my work, let me know.  ]


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

Reply via email to