Naresh Bajaj wrote:

> Hello all,
> I have one string PT2H46M7.815S.
> It is in hours, minutes and seconds. I want to extract number between
> the alphabets and
> stored in seconds. How should I approach this problem.
> Right now I am using the split command which is not much elegant way.
> Crude method:
> extractinterval(PT7.815S)
> sub extractinterval{
>       my $interval =$_[0];
>       my @temp =split //,$interval;
>         my $output = $temp[2].$temp[3].$temp[4].$temp[5];
>       }
> Is there any other way of doing.

If the strings are fixed format, the best way would be to use substr
to grab each time field.

If not fixed, a RE should grab the 3 variable length fields, eg:

foreach ('PT2H46M7.815S', 'PT02H4M7S', 'PT2H4M6.8S') {
        if (/^.*?(\d+).*?(\d+).*?([\d.]+)/) {
                printf "%-16s: %02u:%02u:%.3f\n", $_, $1, $2, $3;
        } else {
                ...  some error msg
        }
}



_______________________________________________
ActivePerl mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to