From: Rafael Garcia-Suarez Date: Mon, 11 Jun 2007 14:27:40 +0000 (+0000) Subject: Doc adjustments for the number localization and setlocale(). X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=2095dafae09cfface71d4202b3188926ea0ccc1c;p=p5sagit%2Fp5-mst-13.2.git Doc adjustments for the number localization and setlocale(). See debian bug #379463. p4raw-id: //depot/perl@31363 --- diff --git a/pod/perllocale.pod b/pod/perllocale.pod index a0962fc..3c2b3ab 100644 --- a/pod/perllocale.pod +++ b/pod/perllocale.pod @@ -574,23 +574,23 @@ should use C<\w> inside a C block. See L<"SECURITY">. =head2 Category LC_NUMERIC: Numeric Formatting -In the scope of S>, Perl obeys the C locale -information, which controls an application's idea of how numbers should -be formatted for human readability by the printf(), sprintf(), and -write() functions. String-to-numeric conversion by the POSIX::strtod() +After a proper POSIX::setlocale() call, Perl obeys the C +locale information, which controls an application's idea of how numbers +should be formatted for human readability by the printf(), sprintf(), and +write() functions. String-to-numeric conversion by the POSIX::strtod() function is also affected. In most implementations the only effect is to change the character used for the decimal point--perhaps from '.' to ','. These functions aren't aware of such niceties as thousands separation and -so on. (See L if you care about these things.) +so on. (See L if you care about these things.) Output produced by print() is also affected by the current locale: it -depends on whether C or C is in effect, and corresponds to what you'd get from printf() in the "C" locale. The same is true for Perl's internal conversions between numeric and string formats: - use POSIX qw(strtod); - use locale; + use POSIX qw(strtod setlocale LC_NUMERIC); + + setlocale LC_NUMERIC, ""; $n = 5/2; # Assign numeric 2.5 to $n @@ -922,7 +922,7 @@ and also how strings are parsed by POSIX::strtod() as numbers: use locale; use POSIX qw(locale_h strtod); - setlocale(LC_NUMERIC, "de_DE") or die "Entshuldigung"; + setlocale(LC_NUMERIC, "de_DE") or die "Entschuldigung"; my $x = strtod("2,34") + 5; print $x, "\n"; # Probably shows 7,34.