Вот небольшой грязный пример Perl при преобразовании в миллисекунды строки следующего формата: «Ad Bh Cm Ds», где A, B, C и D - значения для дня, часа, минуты и секунды соответственно. Порядок не имеет значения, но повторение не предусматривается (например, будет обрабатываться только первое появление 'd', другие будут игнорироваться).
#!/usr/bin/perl use strict; my @markers = ('d', 'h', 'm', 's'); my @converter = (24*60*60*1000, 60*60*1000, 60*1000, 1000); my $string = $ARGV[0]; my $total_ms = 0; while(@markers) { my $cur_mark = shift(@markers); my $cur_convert = shift(@converter); if ($string =~ m/$cur_mark/) { my $pre = $`; $pre =~ m/\b/; $total_ms += $' * $cur_convert; } } print("Total miliseconds = $total_ms\n");
Примеры использования:
./foo.pl "2m 2s" Total miliseconds = 122000 ./foo.pl "0.5h 0.5s" Total miliseconds = 1800500