насколько я могу судить, приведённый код решает задачу просто замечательно - потому огромное спасибо )<br><br><div class="gmail_quote">6 ноября 2008 г. 16:51 пользователь Alexander Lourier <span dir="ltr"><<a href="mailto:aml@rulezz.ru">aml@rulezz.ru</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">В сообщении от Четверг 06 ноября 2008 Павел Тимонин написал(a):<br>
<div class="Ih2E3d"><br>
> работа единичная, то есть эти скрипты будут запускаться примерно раз в<br>
> неделю. так что быстродействие и оптимизированность в общем-то не<br>
> требуется, гораздо важнее наглядность кода, чтоб я мог в нём разобраться :)<br>
><br>
> можете подсказать что-нибудь?<br>
<br>
</div>#!/usr/bin/perl<br>
<br>
use strict;<br>
<br>
my %single = (<br>
'катушки' => 'катушка',<br>
'бухты' => 'бухта',<br>
);<br>
<br>
while (<>) {<br>
<br>
chomp;<br>
<br>
for my $entry (split /, /) {<br>
<br>
if (my ($amount, $unit_name, $unit_size) = ($entry =~ /^\s*(\d+|\d+,\d+|<br>
\d+\.\d+)\s*\((.+)\s+по\s+(\d+)\s*м\s*\)\s*$/)) {<br>
<br>
$amount =~ s/,/./;<br>
<br>
my $units = $amount * 1000 / $unit_size;<br>
<br>
if ($units != int($units)) {<br>
<br>
warn "$entry: дробное число единиц\n";<br>
}<br>
<br>
my $out_line = ($unit_size / 1000) . ' ' . ($single{$unit_name} ||<br>
$unit_name) . "\n";<br>
<br>
for (my $i = 0; $i < $units; $i++) {<br>
<br>
print $out_line;<br>
}<br>
<br>
} else {<br>
<br>
warn "$entry: неизвестный формат\n";<br>
}<br>
}<br>
}<br>
<br>
В аттаче он же с сохранением форматирования.<br>
<font color="#888888"><br>
--<br>
Alexander Lourier, <a href="http://aml.rulezz.ru" target="_blank">http://aml.rulezz.ru</a><br>
</font><br>--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
<br></blockquote></div><br>