请教大家,在程序中如何得到perl脚本的执行路径?

请教大家,在程序中如何得到perl脚本的执行路径?

例如程序可能在/usr/bin下,但我在/下执行的脚本,我想得到/usr/bin这个路径名,当然执行前PATH环境变量中已有/usr/bin了
[root@-01 tmp]# cd /
[root@-01 /]# ls -l /usr/bin/test.pl
-rwxr-xr-x  1 root root 68  9月  8 12:24 /usr/bin/test.pl
[root@-01 /]# pwd
/
[root@-01 /]# test.pl
The program running :/usr/bin/test.pl
[root@-01 /]# cat /usr/bin/test.pl
#!/usr/bin/perl -w
use strict;

print "The program running :$0\n";

[root@-01 /]#








[root@-01 /]# test.pl
The program running :/usr/bin/test.pl
pathname: /usr/bin
proname:  test.pl
[root@-01 /]# cat /usr//bin/test.pl
#!/usr/bin/perl -w
use strict;
use File::Basename;

print "The program running :$0\n";
my $proname=basename $0;
my $pathname=dirname $0;

print "pathname: $pathname\n";
print "proname:  $proname\n";
[root@-01 /]#


QUOTE:
原帖由 zhouhaiming 于 2007-9-8 09:32 发表
例如程序可能在/usr/bin下,但我在/下执行的脚本,我想得到/usr/bin这个路径名,当然执行前PATH环境变量中已有/usr/bin了

use FindBin;

chdir $FindBin::Bin;


QUOTE:
原帖由 Ecore 于 2007-9-8 12:32 发表
[root@-01 tmp]# cd /
[root@-01 /]# ls -l /usr/bin/test.pl
-rwxr-xr-x  1 root root 68  9月  8 12:24 /usr/bin/test.pl
[root@-01 /]# pwd
/
[root@-01 /]# test.pl
The program running :/usr/bin/t ...

好用,谢谢!都用到我的程序里
use Cwd;

    print cwd, "\n";
3楼,5楼你们难道理解不了楼主的意思?还是你们就不懂中文?


QUOTE:
原帖由 Ecore 于 2007-9-9 18:14 发表
3楼,5楼你们难道理解不了楼主的意思?还是你们就不懂中文?

Cwd的解释竟然是错误的, 误人子弟啊!!!

perldoc FindBin


QUOTE:
原帖由 zhouhaiming 于 2007-9-8 09:32 发表
例如程序可能在/usr/bin下,但我在/下执行的脚本,我想得到/usr/bin这个路径名,当然执行前PATH环境变量中已有/usr/bin了

受不了了
他是想得到某个程序执行时候的路径...比如自己写了一个程序test.pl,把它放在了PATH所指定的路径里......比如test.pl放在/usr/bin
#test.pl
执行的时候要取到/usr/bin这个值..


而不是要取PATH,更不是Cwd,更不用FindBin