That httpd.pl there is the name of the process. That's initialised from the base name of the file that the process last executed, but can also be modified by other means.
With perl, it's just a matter of assigning a value to $0:
$ perl -e '$0 = "httpd.pl"; sleep 10' & ps -fp $!
[2] 11954
UID PID PPID C STIME TTY TIME CMD
stephane 11954 31685 0 09:57 pts/8 00:00:00 httpd.pl
So, there's no telling whether that httpd.pl comes a file called like that or something else. perl could still have been run with code passed as -e or from another file or from stdin...
If the perl code was loaded from a file called httpd.pl (or anything other file for that matters), you could probably not tell either because perl usually closes the file after it has read its content, so it wouldn't show up in the output of lsof -p PID.
If the script was indeed passed to the perl interpreter and if the perl code doesn't subsequently modify the process name or the arguments, you may get a clue by looking at its command line arguments with ps -fp PID.
You would then see the path of the file as passed as argument. It may be a relative path, in which case you can look at the cwd entry in lsof which would help unless the script changes the current working directory.
If the script was started by a shell, you may also be able to find the path (again possibly relative) in the _ environment variable (grep -z '^_=' /proc/PID/environ on Linux).
In any case, the script could have very well deleted itself first thing upon starting.
If you want to see the code of that httpd.pl, best would be to dump the content of that process' memory (like with gcore, shipped with gdb or looking at /proc/PID/{maps,mem} on Linux). And look for the code in there.
For example, looking for #! in NUL-delimited records:
perl -e '$p=shift;open MAPS, "/proc/$p/maps";
open MEM, "/proc/$p/mem" or die "open mem: $!";
for $m (grep !m{/|\[v}, <MAPS>){
($a,$b) = map hex, $m =~ /[\da-f]+/g;
seek MEM, $a, 0 or die "seek: $!";
read MEM, $c, $b - $a or die "read: $!";
print $c
}' PID | grep -z '#!'
YYMV though as the raw source code may no longer be in there. You'd then need to look for the pre-compiled code and decode it.
This stackoverflow Q&A would then help you doing that.