2012-12-11T14:02:32 pqachso, das komma habe ich übersehen.
nimm am besten Number::Format. angeblich soll das auch mit sprintf und POSIX::setlocale() gehn, aber tut es hier nicht.
2012-12-11T14:14:50 pqwas für ein risiko?
1 2 3
use Number::Format; my $f = Number::Format->new(DECIMAL_POINT => ","); say $f->format_number($num, 2, 2);
2012-12-11T14:48:24 pqhäh? Number::Format ist doch gerade dafür da, dass du dich damit nicht rumschlagen musst.
perl -MPOSIX=LC_NUMERIC,setlocale -E 'setlocale LC_NUMERIC,""; printf "%.2f", 1.00'
1
2
3
4
5
6
$ perl -MPOSIX=LC_NUMERIC,setlocale -E 'setlocale LC_NUMERIC,"de_DE"; printf "%.2f\n", 1'
1.00
$ perl -MPOSIX=LC_NUMERIC,setlocale -E 'setlocale LC_NUMERIC,"de"; printf "%.2f\n", 1'
1.00
$ perl -MPOSIX=LC_NUMERIC,setlocale -E 'setlocale LC_NUMERIC,""; printf "%.2f\n", 1'
1,00
1
2
perl -MPOSIX=LC_NUMERIC,setlocale -E 'setlocale LC_NUMERIC,"de_DE"; printf "%.2f\n", 1'
1,00
1 2 3 4
use locale; use POSIX qw(setlocale LC_NUMERIC); setlocale(LC_NUMERIC, ""); printf("%.2f", 1);
1.00
1
2
perl -Mlocale -MPOSIX=LC_NUMERIC,setlocale -wle "setlocale(LC_NUMERIC,''); printf qq~%.2f\n~, 1;"
1,00