"John W. Krahn" wrote:
> 
> Dan wrote:
> >
> > I have a string, which is to represent a length of time, say 3d4h45m12s
> > which can be variable, so you may end up with just 3m, or 5h2m, etc. What I
> > need to do, is to take this string, and split it up into $days, $hours,
> > $minutes etc, and then create that amount of time in seconds, which will
> > then be added to the current timestamp to create an expiry time.
> 
> $ perl -e'
> my @x = qw/3d4h45m12s 3m, or 5h2m, /;
> for ( @x ) {
>     my ($sec) = /(\d+)s/;
>     my ($min) = /(\d+)m/;
>     $sec += $min * 60;
>     my ($hr)  = /(\d+)h/;
>     $sec += $hr * 3600;
>     my ($day) = /(\d+)d/;
>     $sec += $day * 86400;
> 
>     print "$sec $_\n";
>     }
> '
> 276312 3d4h45m12s
> 180 3m,
> 0 or
> 18120 5h2m,

Another way to do it.  :-)

$ perl -e'
my %mult = ( s => 1, m => 60, h => 3600, d => 86400 );
my @x = qw/3d4h45m12s 3m, or 5h2m, /;
for ( @x ) {
    my %time = reverse /(\d+)([smhd])/g;
    my $sec = 0;
    $sec += $time{$_} * $mult{$_} for keys %time;
    print "$sec $_\n";
    }
'
276312 3d4h45m12s
180 3m,
0 or
18120 5h2m,



John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to