Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re^3: Change decimal point temporarily

by ikegami (Patriarch)
on Aug 02, 2010 at 22:35 UTC ( [id://852562]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Change decimal point temporarily
in thread Change decimal point temporarily

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.

Replies are listed 'Best First'.
Re^4: Change decimal point temporarily
by Jenda (Abbot) on Aug 02, 2010 at 23:05 UTC
    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.

    Jenda
    Enoch was right!
    Enjoy the last years of Rome.

      I don't think so. That's the opposite of what he said (changing the decimal point from "." to ","), and it's the opposite of what his code does.

      I see what you mean, but it still make no sense since he says setlocale works.

      $ perl -we'use POSIX; setlocale LC_NUMERIC, "fr_FR"; print 0+"123,45"' Argument "123,45" isn't numeric in addition (+) at -e line 1. 123
        Hm, It seems to work if you use locale:
        perl -we 'use POSIX; use locale; setlocale LC_NUMERIC, "fr_FR"; $x = " +123,45"; $x+=0.1; print $x; setlocale LC_NUMERIC, ""; $x += 0.1; prin +t $x;'
        Update: this does not work:
        perl -we 'use POSIX; use locale; setlocale LC_NUMERIC, "fr_FR"; $x = " +123,45"; print $x; setlocale LC_NUMERIC, ""; $x += 0.1; print $x;'
        So what I do now is to add 0 if it looks_like_number() and everything works fine. At least what I've tested until now...

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (5)
As of 2024-03-29 10:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found