RFC 2646 говорит:
тип среды текста/Плоскости является наименьшим общим знаменателем интернет-электронной почты со строками не больше, чем 997 символов (условно обычно не больше, чем 80)
, Другой популярный стандарт должен перенестись в 72 символах. Это относится ко времени многих консольных приложений (как РЕДАКТИРОВАНИЕ и много интерфейсов BBS) что отображаемый текст в ASCII "окно" включая границу и полосу прокрутки, позволяя немного меньше чем 80 символам быть отображенными.
$num =~ s/(\d{3})$/.$1/
В ней говорится: возьмите блок из трех цифр (который должен быть привязан к КОНЦУ строки) и замените их с помощью ".
", за которым следует все, что было только что сопоставлено.
И еще один способ развлечься; -)
my $num_3dec = sprintf '%.3f', $num / 1000;
Вот еще одно решение для удовольствия:
В Perl substr () может быть lvalue, которое может помочь в вашем случае.
substr ($num , -3 , 0) = '.';
добавит точку перед последним три цифры.
Вы также можете использовать версию substr с четырьмя аргументами (как указано в комментариях), чтобы получить тот же эффект:
substr( $num, -3, 0, '.' );
Я надеюсь, что это более элегантно / читабельно, чем решение с регулярным выражением, но я уверен он отключит использование любого, кто не привык к substr (), как lvalue.