|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : alexander smishlajev 2:5100/14.8 22 Jun 2000 09:55:22 To : Maxim Y. Zinyakov Subject : Вывод 1 234 567 890, вместо 1234567890 ??? -------------------------------------------------------------------------------- monday june 19 2000, Maxim Y. Zinyakov writes to Vadim Sadretdinov: VS>> Hе подскажите ли как сделать вывод числа с разделением на триады, VS>> т.е. выводить не так 1234567890, а вот так 1 234 567 890 MZ> === Cut === MZ> #!/usr/bin/perl MZ> $a="1234567890"; MZ> while(length($a)){ MZ> $b=substr($a,-3,3)." ".$b; MZ> $a=substr($a,0,length($a)-3); MZ> }; MZ> print "$b\n" MZ> === Cut === класс! просили не подсказывать, но вот еще вариант: === begin cut === $a ="1234567890"; $b =''; sub c { $d =pack('aaa', reverse @_); return " $d"; } $e =length($a); @f =(); CHAR: while(1) { $e =$e -1; if ($e <0) { $b =join('', @f, $b); last CHAR; }; $g =substr($a, $e, 1); push @f, $g; $h =length($a) -$e; while ($h >0) { $h -=3 }; do { $b =sprintf('%s%s', c(@f), $b); @f =(); } unless ($h !=0); }; print $b; 1; ==== end cut ==== правда, он иногда спереди лишний пробел добавляет, но зато сзади не добавляет. желаю здравствовать, alex. --- GoldED 3.0.1 * Origin: аквариум с плавающей точкой (FidoNet 2:5100/14.8) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/224353951e2b7.html, оценка из 5, голосов 10
|