On Nov 9, Robert Thompson said:
>I am looking at the "Insert comma's into a number" script in
>Oreily's Perl Cookbook (pg 64) and have some questions. The script (more
>or less) is below followed by some output and questions:
You copied it incorrectly, or there is a typo in the book:
> $num =~ s/([0-9]{3}) (?=\d) (?!=\d*\.)/$1,/xg;
That should be (?! \d*\. ), not (?!= \d*\. ).
> >./foo.pl 10,000,000
> 10,000,000
> Why didn't it print 10,,000,,000?
Why would it double the commas? The algorithm is this:
10000000
reverse the number
00000001
get the next three digits
000xxxxx
that are followed by another digit
0000xxxx
and that are not followed by any number of digits and a period
(ok)
place a comma after the three digits
000,00001
get the next three digits
xxxx000xx
that are followed by another digit
xxxx0000x
and that are not followed by any number of digits and a period
(ok)
place a comma after the three digits
000,000,01
get the next three digits
(fail)
(done)
--
Jeff "japhy" Pinyan [EMAIL PROTECTED] http://www.pobox.com/~japhy/
RPI Acacia brother #734 http://www.perlmonks.org/ http://www.cpan.org/
** Look for "Regular Expressions in Perl" published by Manning, in 2002 **
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]