The above answers your question but, if tile is read as diffing a directory on a change list it can be answered with the following:
p4 filelog ... | awk '
BEGIN {FS="[ /]";tc=999}
/^\/\// {fn=$NF;o=1;if (system("test -w " fn)) h=0; else h=""}
/^\.\.\.\ \#/ {if (h==0) h=$2;
if ($4<=tc && o==1) {print "p4 diff -db -dw " fn h " " fn $2 " ;#" $4;o=0}}' \
| sh
This will diff all the files in the directory against the changelist 999 it uses the "have" version if it has be checked out otherwise it uses the latest version.
this was tested with GNU Awk 3.1.3