I do have one additional question with the suggestion for the @days array.
How does this affect the month.  Localtime returns the month-1, so I would
have to adjust for that during the month, and then leave it alone at the
end of the month.  Or was this a suggestion to replace the if/else part?

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

> ### when is $day going to be LESS than 1?
> ### character classes (the [...] in a regex) match CHARACTERS.
> ### your character class is [01257,] -- I don't think that's what you
> ### wanted; change it to
> ###
> ###   if ($day == 1 and $month !~ /^(5|7|10|12)$/) { ... }
> ###
> ### but this code should be rewritten with a constant array that relates
> ### months to the days in them:
> ###
> ###   @days = ( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
> ###   $day = --$day || $days[$month - 1];
> ###   # if $day was 1, --$day is 0, which means we need to calculate
> ###   # the last day of the previous month
> ###
> ### that will work even if $month is 0 (January) since $days[-1] is the
> ### last element of @days.  please remember to do the adjusting for
> ### $days[1] to make sure leap years are accounted for properly
>
>

Reply via email to