| sharifulin ( @ 2009-11-10 20:43:00 |
| Entry tags: | ironman, perl, pretty |
Perl. Форматирование чисел
Сегодня потребовалось написать функцию по форматированию чисел, приведение к читаемому виду: 1234567 => 1 234 567.
Написал следующую короткую и красивую функцию:
sub D($) {
for (scalar reverse shift) {
s/(\d{3})(?=\d)/$1 /g;
return scalar reverse;
}
}
say D 12345;
say D 123456;
say D 1234.56;Спасибо Вместо этого у меня была вторая простая регекспа, которая удаляла лишний символ с конца.
Функция умеет работать и с флоатом, где количество знаков после запятой максимум 3, опять же благодаря (?=\d).
scalar reverse – заставляет работать reverse в скалярном котексте при использовании в списковом контексте :)
По-моему, очень красиво получилось )))
Исходник
ЗЫ: С Павлом Кудиновым сошлись на мнении, что наверня-ка на CPAN есть модуль на несколько экранов с похожим функционалом :)
use Perl or die;
JFDI