Re: How create a time object of VBS in perl?

Xiao Yafeng <[email protected]>
Newsgroups gmane.comp.lang.perl.active-perl
Message-ID <[email protected]>
I've used vbconverter to translate now function into perl:

package VBS;
use strict;

use Win32::OLE::NLS qw(:TIME
       :DATE
       GetLocaleInfo GetUserDefaultLCID
                       LOCALE_SMONTHNAME1 LOCALE_SABBREVMONTHNAME1
                       LOCALE_SDAYNAME1 LOCALE_SABBREVDAYNAME1
       LOCALE_IFIRSTDAYOFWEEK
       LOCALE_SDATE LOCALE_IDATE
       LOCALE_SGROUPING
       );
use Win32::OLE::Variant;

use constant EPOCH       => 25569;
use constant SEC_PER_DAY => 86400;

our $lcid;
BEGIN {
    $lcid = GetUserDefaultLCID();
    Win32::OLE->Option(LCID => $lcid);
}

# Return the local time in seconds since the epoch.
sub _localtime_in_sec {
    require Time::Local;
    return 2.0 * CORE::time() - Time::Local::timelocal(gmtime);
}

# Extract specific information out of a date.
sub _extract_from_date {
    my($date,$method,$format) = @_;
    return unless $date;
    unless (UNIVERSAL::isa($date, "Win32::OLE::Variant")) {
        $date = Variant(VT_DATE, $date);
    }
    return $date->$method($format, $lcid);
}

# Returns the current date and time according to the setting of your
# computer's system date and time.
sub Now {
    return Variant(VT_DATE, EPOCH + _localtime_in_sec()/SEC_PER_DAY);
}

As above code, VB's time format is just dates wrapped by VT_DATE. Is it
right?
And, What is lcid? What is the usage of redundant package ( Win32::OLE::NLS
) and function ( _extract_from_date) ?



On Sun, Sep 19, 2010 at 10:54 PM, John Mason Jr <[email protected]>wrote:

>   On 9/19/2010 7:48 AM, Ludwig, Michael wrote:
> >>     Could you tell me how create a time object of VBS in perl? Below
> >> statement define a starting time and pass it to the getdata function
> >> to get data in VBS:
> >>
> >> start_time = DateSerial( 2003, 01, 31) + TimeSerial( 6, 0, 0)
> >> data_array = lpd.getdata(id, start_time)
> >>
> >> But I don't know how to translate it into perl.
> >> Since I intend to rewrite all vbs scripts, it will be a big problem!
> > Using Windows Script Files (.wsf)
> > http://msdn.microsoft.com/en-us/library/15x4407c%28VS.85%29.aspx
> >
> > WSF might be helpful to you. It allows you to have several engines
> > work jointly. You might be able to keep the parts in VBS that are not
> > practical to port to Perl. It is XML, so you can use Unicode in your
> > script.
> >
>
> If you are doing a bunch of conversions then you might want to look at
> the Perl Dev Kit as it has a vbscript to perl converter
>
> John
> _______________________________________________
> ActivePerl mailing list
> [email protected]
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
>

_______________________________________________
ActivePerl mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.