[Moscow.pm] Парсинг текстовой строки
Alexander Lourier
aml на rulezz.ru
Чт Ноя 6 05:51:38 PST 2008
В сообщении от Четверг 06 ноября 2008 Павел Тимонин написал(a):
> работа единичная, то есть эти скрипты будут запускаться примерно раз в
> неделю. так что быстродействие и оптимизированность в общем-то не
> требуется, гораздо важнее наглядность кода, чтоб я мог в нём разобраться :)
>
> можете подсказать что-нибудь?
#!/usr/bin/perl
use strict;
my %single = (
'катушки' => 'катушка',
'бухты' => 'бухта',
);
while (<>) {
chomp;
for my $entry (split /, /) {
if (my ($amount, $unit_name, $unit_size) = ($entry =~ /^\s*(\d+|\d+,\d+|
\d+\.\d+)\s*\((.+)\s+по\s+(\d+)\s*м\s*\)\s*$/)) {
$amount =~ s/,/./;
my $units = $amount * 1000 / $unit_size;
if ($units != int($units)) {
warn "$entry: дробное число единиц\n";
}
my $out_line = ($unit_size / 1000) . ' ' . ($single{$unit_name} ||
$unit_name) . "\n";
for (my $i = 0; $i < $units; $i++) {
print $out_line;
}
} else {
warn "$entry: неизвестный формат\n";
}
}
}
В аттаче он же с сохранением форматирования.
--
Alexander Lourier, http://aml.rulezz.ru
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: c.pl
Type: application/x-perl
Size: 706 bytes
Desc: отсутствует
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20081106/b6a2a66b/attachment.bin>
Подробная информация о списке рассылки Moscow-pm