Although my setup was substantially the same as yours, I've made an exact copy of your setup but still l, immediately, get the same error.
However, I've noticed a few differences in other aspects of your setup. My www layout follows a rather ancient apache structure which is:-
Doc root = /usr/local/httpd/htdocs
CGI root = /usr/local/httpd/cgi-bin
with all of my scripts in sub directories under CGI root.
I have set up a Fast CGI context called /cgi-bin/ which is linked to lsperld (this pretty much mirrors a Ruby on Rails setup (aside from the additional /dispatch.lsapi Static context) which does work).
I also have a Script Handler that specifies that .pl scripts should us the Fast CGI app.
However, I cannot see anywhere where /cgi-bin/ is mapped to /usr/local/httpd/cgi-bin. This didn't seem to matter when /cgi-bin/ was configured for vanilla CGI but I guess that, maybe, it does for Fast CGI.
Is the missing SCRIPT_FILENAME anything to do with this mapping of the /cgi-bin/ URL to a specific directory?
Incidently, if I remove the /cgi-bin/ context (matching your setup as far as I can tell), I then get a 404 Not Found error when I try and run a script. Looking in the error log it is showing that it cannot find a file in $VH_ROOT/cgi-bin/subdir/script.pl which also suggests that I need to do some sort of specific mapping of Script Root to /cgi-bin/. I've tried a Static context but it did not work.