Re: Date in NT?

2001-06-26 Thread Eric Beaudoin

At 00:23 2001.06.27, Jeff 'japhy' Pinyan wrote:
>On Jun 27, Walt Mankowski said:
>
>>On Tue, Jun 26, 2001 at 10:53:12PM -0500, Steve Howard wrote:
>>> I would suggest using the localtime function. That will work regardless of
>>> OS.
>>> 
>>> ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
>>> localtime(time);
>>> ($mon, $year) = ($mon+1, $year+1900);
>>
>>That doesn't quite work, since %m and %d zero-pad their values.  If
>>you just need the date in one variable, call localtime as above, then
>>use sprintf to format them correctly:
>
>Or use the POSIX::strftime() function, which uses its own %X formats to
>create a date string.

I've found time2iso() from HTTP::Date simple to use and reliable across OS. There is 
also a parse_date() function that might be helpfull for you.


---
Éric Beaudoin




Re: Date in NT?

2001-06-26 Thread Walt Mankowski

On Wed, Jun 27, 2001 at 12:23:36AM -0400, Jeff 'japhy' Pinyan wrote:
> Or use the POSIX::strftime() function, which uses its own %X formats to
> create a date string.

Or the UnixDate() function in Date::Manip.pm, although that's almost
certainly overkill for what you're doing here.

Walt




Re: Date in NT?

2001-06-26 Thread Jeff 'japhy' Pinyan

On Jun 27, Walt Mankowski said:

>On Tue, Jun 26, 2001 at 10:53:12PM -0500, Steve Howard wrote:
>> I would suggest using the localtime function. That will work regardless of
>> OS.
>> 
>> ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
>> localtime(time);
>> ($mon, $year) = ($mon+1, $year+1900);
>
>That doesn't quite work, since %m and %d zero-pad their values.  If
>you just need the date in one variable, call localtime as above, then
>use sprintf to format them correctly:

Or use the POSIX::strftime() function, which uses its own %X formats to
create a date string.

-- 
Jeff "japhy" Pinyan  [EMAIL PROTECTED]  http://www.pobox.com/~japhy/
I am Marillion, the wielder of Ringril, known as Hesinaur, the Winter-Sun.
Are you a Monk?  http://www.perlmonks.com/ http://forums.perlguru.com/
Perl Programmer at RiskMetrics Group, Inc. http://www.riskmetrics.com/
Acacia Fraternity, Rensselaer Chapter. Brother #734
**  Manning Publications, Co, is publishing my Perl Regex book  **




Re: Date in NT?

2001-06-26 Thread Walt Mankowski

On Tue, Jun 26, 2001 at 10:53:12PM -0500, Steve Howard wrote:
> I would suggest using the localtime function. That will work regardless of
> OS.
> 
> ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
> localtime(time);
> ($mon, $year) = ($mon+1, $year+1900);

That doesn't quite work, since %m and %d zero-pad their values.  If
you just need the date in one variable, call localtime as above, then
use sprintf to format them correctly:

($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
  localtime(time);
$current_date = sprintf("%d%02d%02d", $year+1900, $mon+1, $mday);

> If, however, you must drop a command through to the shell to pull a date
> from NT, the commands for date, and time are:
> 
> date /t
> time /t

I'd strongly recomment against that, both from a security and
performance point of view.  Why go out to the shell for something you
can do more easily, securely, and efficiently in Perl itself?

Walt




RE: Date in NT?

2001-06-26 Thread Steve Howard

I would suggest using the localtime function. That will work regardless of
OS.

($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
localtime(time);
($mon, $year) = ($mon+1, $year+1900);




That example is almost exactly how it appears in

perldoc -f localtime

in case you need further examples.

If, however, you must drop a command through to the shell to pull a date
from NT, the commands for date, and time are:

date /t
time /t

Enjoy,

Steve Howard

-Original Message-
From: Tom Yarrish [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, June 26, 2001 10:31 PM
To: [EMAIL PROTECTED]
Subject: Date in NT?


Hey all,
Okay, new script, quick question.  On Windows NT (comments aside), how would
one accomplish the following?

(this would be on Unix)

$date = `date +"%Y%m%d";



I need to pass the current date to a variable to use later in a script.

Thanks,
Tom
#!/usr/bin/perl -w
# 526-byte qrpff, Keith Winstein and Marc Horowitz <[EMAIL PROTECTED]>
# MPEG 2 PS VOB file on stdin -> descrambled output on stdout
# arguments: title key bytes in least to most-significant order
$_='while(read+STDIN,$_,2048){$a=29;$c=142;if((@a=unx"C*",$_)[20]&48){$h=5;
$_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$d=
unxV,xb25,$_;$b=73;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>8^($f=($t=255)&($d
>>12^$d>>4^$d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))<<9
,$_=(map{$_%16or$t^=$c^=($m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t
^=(72,@z=(64,72,$a^=12*($_%16-2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271)
)
[$_]^(($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;eva
l




Date in NT?

2001-06-26 Thread Tom Yarrish

Hey all,
Okay, new script, quick question.  On Windows NT (comments aside), how would one 
accomplish the following?

(this would be on Unix)

$date = `date +"%Y%m%d";



I need to pass the current date to a variable to use later in a script.

Thanks,
Tom
#!/usr/bin/perl -w
# 526-byte qrpff, Keith Winstein and Marc Horowitz <[EMAIL PROTECTED]>
# MPEG 2 PS VOB file on stdin -> descrambled output on stdout
# arguments: title key bytes in least to most-significant order
$_='while(read+STDIN,$_,2048){$a=29;$c=142;if((@a=unx"C*",$_)[20]&48){$h=5;
$_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$d=
unxV,xb25,$_;$b=73;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>8^($f=($t=255)&($d
>>12^$d>>4^$d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))<<9
,$_=(map{$_%16or$t^=$c^=($m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t
^=(72,@z=(64,72,$a^=12*($_%16-2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271))
[$_]^(($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;eval