Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Re: Change decimal point temporarily

by ikegami (Patriarch)
on Aug 02, 2010 at 20:52 UTC ( #852539=note: print w/replies, xml ) Need Help??

in reply to Change decimal point temporarily

my $s = 123.45; $s =~ s/\./,/;

Replies are listed 'Best First'.
Re^2: Change decimal point temporarily
by lima1 (Curate) on Aug 02, 2010 at 21:01 UTC
    I was unclear. It should work automatically. With a regex, I first have to test whether it is a numeric field. Obviously, I don't want to replace points in text columns.
      use Scalar::Util qw( looks_like_number ); my $s = 123.45; $s =~ s/\./,/ if looks_like_number($s);

      Works even better than setlocale because you are surely starting with the number in string form if you don't know whether a column contains a number or not.

        use Scalar::Util qw( looks_like_number ); print looks_like_number('12,48'); # --> 0
        He's PARSING a csv (or more probably a tab or semicolon separated file) so he needs to go exactly the other way around. Accept 12,48 and treat it as a number.

        Enoch was right!
        Enjoy the last years of Rome.

      Or... I suppose if we have a digit either size of a '.' then it's probably a number with a decimal point:
      $s = "123.45"; $s =~ s/(?<=\d)\.(?=\d)/,/;
      ALthough... I don't quite understand what you're trying to do - surely if you're parsing a CSV file containing numbers with decimal points you'd rather they weren't commas?
        The motivation is a feature for the module described in RFC: Text::CSV::R. It is an option to set the decimal point. In Germany for example, it is common for CSV files to use a comma as decimal point and a semicolon as field separator.

        So I guess a locale approach would be the performance-wise fastest solution. But setting the locale to an arbitrary locale which uses a comma (de_DE, fr_Fr,...) just to change this single parameter seems like hack.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://852539]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (1)
As of 2022-01-29 10:53 GMT
Find Nodes?
    Voting Booth?
    In 2022, my preferred method to securely store passwords is:

    Results (74 votes). Check out past polls.