想澄清一下

时间:2016-02-05 07:51:00

标签: regex perl

我想了解一些已经写好的代码..

我无法理解

my $l = $0; $l =~ s-/[^/]+/[^/]+$-/lib/perl-; 

分配给$ 0的是什么? 什么是表达式中的 - (连字符)运算符? whay $ - 用在表达式中吗?

请解释ablove 3Qs。

BEGIN {
# figure out our general library path
my $p;
my $l = $0; $l =~ s-/[^/]+/[^/]+$-/lib/perl-; 
push @INC,$l;
# add some platform components, based on files
push @INC,"$l/sunos"  if ( grep /solaris/,@INC );
push @INC,"$l/csw"    if ( grep /csw/,@INC );
push @INC,"$l/i386"   if ( grep /i386/,@INC );
push @INC,"$l/x86_64" if ( grep /x86_64/,@INC );
}

1 个答案:

答案 0 :(得分:2)

您可以在perlvar中找到各种Perl特殊变量。那里解释了$0

perlop中所述,替换运算符s/REGEX/REPLACEMENT/可以使用不同的分隔符编写,例如破折号。当正则表达式或替换包含斜杠时很方便,就像这里的情况一样。使用配对分隔符可能更具可读性:

s{/[^/]+/[^/]+$}{/lib/perl}

或使用/x

s{ / [^/]+ / [^/]+ $ }{/lib/perl}x