Вывод запятых в числах
Проблема
При выводе числа требуется вывести запятые после соответствующих разрядов.
Длинные числа так воспринимаются намного лучше, особенно в отчетах.
Решение
Обратите строку, чтобы перебирать символы в обратном порядке, — это позволит избежать
подстановок в дробной части числа. Затем воспользуйтесь регулярным выражением, найдите
позиции для запятых и вставьте их с помощью подстановки. Наконец, верните
строку к исходному порядку символов.
sub commify {
my $text = reverse $_[0];
$text =~ s/(\d\d\d)(?=\d)(?!\d*\.)/$1./g;
return scalar reverse $text;
}
Комментарий
Регулярные выражения намного удобнее использовать в прямом, а не в обратном направлении.
Учитывая этот факт, мы меняем порядок символов в строке на противоположный и вносим
небольшие изменения в алгоритм, который многократно вставляет запятые через каждые три
символа от конца. Когда все вставки будут выполнены, порядок символов снова меняется,
а строка возвращается из функции. Поскольку функция reverse учитывает косвенный контекст
возврата, мы принудительно переводим ее в скалярный контекст.
См. такжеОписание функции reverse
Proverte kod v komentariyah gde pro list tam oshibki detskie
Оставить комментарий:
|
|