($a,$f,$t,$k)=@ARGV;$k=~s/%([\da-f]{2})/pack"H2",$1/egi;print"Content-Type: ".
"text/",$a?"tab-separated-values\nContent-Disposition: attachment;filename=l".
"og$f".($t&&"-$t").($k&&"-$k").'.csv':plain,"\n\n";$f?do{/^....(..)(..)$/&&$1*
$2&&$1<13&&$2<32&&(open(F,"$_.txt"),print grep$k?/\Q$k/o:1,<F>)for$f..$t||$f}:
do{($d,$m,$y)=(localtime)[3,4,5];open F,sprintf">>%d%02d%02d.txt",$y+1900,$m+1
,$d;print F join("\t",''.localtime,@ENV{REQUEST_URI,REMOTE_ADDR,
HTTP_USER_AGENT,HTTP_REFERER}),"\n"}

>>284
1行目ってなんで変えたの?>>283の1行目で動くようなので戻すことで若干縮め。
あとattachmentのつづり直した。もう少しでshebang含7行。