Bem, aqui está um exemplo rápido e sujo de Perl ao converter em milissegundos uma string com o seguinte formato: "Ad Bh Cm Ds" onde A, B, C e D são valores para dia, hora, minuto e segundo respectivamente. A ordem não importa, mas a repetição não é contemplada (por exemplo, somente a primeira aparição 'd' será processada, outras serão ignoradas).
#!/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");
Exemplos de uso:
./foo.pl "2m 2s"
Total miliseconds = 122000
./foo.pl "0.5h 0.5s"
Total miliseconds = 1800500