将当前路径插入@INC [未完稿]

将当前路径插入@INC [未完稿]

将当前路径插入@INC [未完稿]
###################################################
1 BEGIN {
2 $PATH = '.';
3 my $pgm = $0;
4 $pgm =~s/\\/\//g;
5 $pgm =~s/^.*\/([^\/]+)$/$1/g;
6 unless (-e $PATH.'/'.$pgm) {
7 foreach ($0, $ENV{'SCRIPT_FILENAME'}, $ENV {'PATH_TRANSLATED'}) {
8 s!\\!/!g;
9 s/^(.*)\/[^\/]+$/$1/g;
10 if (-e $_ . '/' .$pgm) { $PATH = $_; last; }
11 }
12 }
13 unshift (@INC, "$PATH");
14 }
####################################################
[b]代码的作用[/b]
在程序运行前,自动探测当前的文件的路径,并将路径插入到@INC的第一个位置.
[b]出现的变量[/b]
$0
$1
$_
$ENV{'SCRIPT_FILENAME'}
$ENV{'PATH_TRANSLATED'}
@INC
[b]出现的函数[/b]
unshift

[b]出现的语句[/b]
BEGIN
unless
foreach
if
[b]出现的操作符[/b]
-e

==============================================
相信大家会在很多CGI程序中看到这段代码,他们往往位于每个CGI文件的开始。但是很多人并不完全了解这段代码的作用,不知道为什么要用这段代码。
首先我们必须要弄清楚相对路径和绝对路径的区别,


首先第1行定义了一个代码块,代码块使用了一个特殊的名字 BEGIN 。根据Perl的定义,BEGIN 内的代码是在整个程序编译前执行的。由于Perl程序在编译的时候,use 函数将会从@INC里面的路径来搜索加载的模块,所以当路径不正确的时候,就会导致编译失败,因此判断路径的代码一定要在程序编译前执行。
第2行,将当前路径'.'赋值给$PATH。在*nux操作系统中,'.'表示当前的路径,而在Windows操作系统中,'.'有时候会失效,也就是说它并不能保证准确性




   

致敬!.
leobbs前面的begin块跟你的很像:)
这个不是在perldoc中讲得很清楚了吗