Since you put this in the CGI section, I'm assuming that by Perl script you mean CGI script. Web servers typically run these out of your cgi-bin directory, using that directory as the script's current working directory. Unfortunately your question is a bit vague. Do you mean the script's current working directory, or where the script physically resides on the filesystem?
If it's the former, use the Cwd module for a portable way to do this. If it's the latter, this isn't really a CGI issue and is already discussed elsewhere. See: How do I get the full path to the script executing? The only catch is that this information can be faked or made unreliable, but it's usually OK so long as you're not relying on it as a security mechanism.
No. There are partial answers based on examining $0 and $ENV{PATH}, with algorithms rolled up into File::FindBin, but nothing will ever be completely unspoofable or accurate.
Update: Just FYI, I interpret the original question
as wanting to know about getcwd() and use Cwd,
rather than wanting the full path to the script (which is
what File::FindBin tries to find in a very perverse way).
But it is hard to say for sure.