Dirk Bremer wrote:

 > I am looking for a regex to be used for comma substitution for numbers, 
i.e. the regex would transform:
 >
 > 999         = 999
 > 9999       = 9,999
 > 99999     = 99,999
 > 999999   = 999,999
 > 9999999 = 9,999,999, etc.
 >
 > I tried s/(\d{3})/,$1/g, but for certain numbers it leaves a leading 
comma, i.e. 999999 = ,999,999. Please advise.

I don't remember where I got this, but here's a short solution:

****************** contents of t.pl ******************
#!/usr/bin/perl
#tested
sub commify($); # puts a comma every 3 numeric characters in a submitted string
for (@ARGV) { my $val = commify($_); print "$val\n" }
sub commify($) {
     local $_  = shift;
     1 while s/^([-+]?\d+)(\d{3})/$1,$2/;
     return $_;
}
****************** end of t.pl ******************

Here are the results of a series of tests. As you can see,
this handles positive and negative numbers, with or without
decimal portions.

Have fun!

--- John

C:\>perl t.pl 1 12 123 1234 12345 123456 1234567
1
12
123
1,234
12,345
123,456
1,234,567

C:\>perl t.pl -1 -12 -123 -1234 -12345 -123456 -1234567
-1
-12
-123
-1,234
-12,345
-123,456
-1,234,567

C:\>perl t.pl 1.12345 12.12345 123.12345 1234.12345 12345.12345 
123456.12345 1234567.12345
1.12345
12.12345
123.12345
1,234.12345
12,345.12345
123,456.12345
1,234,567.12345

C:\>perl t.pl -1.12345 -12.12345 -123.12345 -1234.12345 -12345.12345 
-123456.12345 -1234567.12345
-1.12345
-12.12345
-123.12345
-1,234.12345
-12,345.12345
-123,456.12345
-1,234,567.12345

C:\>perl t.pl +1.12345 +12.12345 +123.12345 +1234.12345 +12345.12345 
+123456.12345 +1234567.12345
+1.12345
+12.12345
+123.12345
+1,234.12345
+12,345.12345
+123,456.12345
+1,234,567.12345

This is my version of Perl:

This is perl, v5.6.1 built for MSWin32-x86-multi-thread
(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2001, Larry Wall

Binary build 630 provided by ActiveState Tool Corp. http://www.ActiveState.com
Built 20:29:41 Oct 31 2001

_______________________________________________
Perl-Win32-Users mailing list
[EMAIL PROTECTED]
http://listserv.ActiveState.com/mailman/listinfo/perl-win32-users

Reply via email to