初学者的低级问题

初学者的低级问题

小弟最近开始学习perl,请教几个低级问题,请高手指教一二:

1。$_这个变量到底是什么意思啊? 我开始理解为命令行的参数值,但是有些时候也用到其他地方,比如:
$what = "[box]";
foreach (qw(in[box] out[box] white[sox])) {
if (/\Q$what\E/) {
print "$_ matched!\n";
}
}

2。以下的情况不是很明白,
$_ = "foot fool buffoon";
s/foo/bar/g;

$a = "foot fool buffoon";
s/foo/bar/g;
上面那种情况可以进行替换,下面那种情况不可以,是什么原因啊?

3。以下语句是什么意思啊?我只知道\Q是在非字母字符前面加上\,\E是什么意思啊?
foreach (qw(in[box] out[box] white[sox])) {
if (/\Q$what\E/) {
print "$_ matched!\n";
}
}

4。/\b\+\b/; 为什么这个正则表达式的意思是:matches "x+y" but not "++" or " + "
\b是表示word boundary

谢谢帮忙!
1。$_这个变量到底是什么意思啊? 我开始理解为命令行的参数值,但是有些时候也用到其他地方,比如:
--------------------------
$_是一个默认的变量,可以由用户设置,或者一些控制结构诸如foreach, while等,或者内置的函数设置,具体看相应的介绍吧。
另外$_变量的值也可以由用户,或者<>,函数等读取,仅当用户不提供显式的参数时。

2。以下的情况不是很明白,
$_ = "foot fool buffoon";
s/foo/bar/g;

$a = "foot fool buffoon";
s/foo/bar/g;
上面那种情况可以进行替换,下面那种情况不可以,是什么原因啊?
------------------------------------------
第一个例子中,s///结构用于$_变量,第二个例子也是同理,如果你想s///作用于$a变量的话就需要用到绑定操作符=~,比如 $a =~ s/foo/bar/g;

3。以下语句是什么意思啊?我只知道\Q是在非字母字符前面加上\,\E是什么意思啊?
foreach (qw(in[box] out[box] white[sox])) {
if (/\Q$what\E/) {
print "$_ matched!\n";
}
}
-----------------------------------
\Q  表示引用(禁止)模式元字符,直到遇到\E

4。/\b\+\b/; 为什么这个正则表达式的意思是:matches "x+y" but not "++" or " + "
\b是表示word boundary
------------------------
简单的说就是匹配这样的模式:  “字母字符+字母字符”, 字母字符包括字母,数字和下划线。

Perl 最常用的默认变量:$_
如果在foreach 循环中省略了控制变量,那Perl 会使用其默认的变量:$_。除了其不寻常的名字外,这和普通变量类似,如
下面代码所示:
foreach(1..10){ #使用默认的变量$_
print “I can count to $_!\n”;
}
虽然它不是Perl 中唯一的默认变量,但无疑是使用的最普遍的。你将在许多例子中看到Perl 在没有要求它使用某个变量或
值时,会自动使用变量$_,这将节约程序员大量的时间来思考使用哪一个变量。为了消除你的疑虑,下面的print,就是使
用$_的一个例子:
$_ =“Yabba dabba doo\n”;
print; #打印出默认变量$_
一点都不低级...没学过的肯定晕 因为多了n多东西...很难理解 不过懂后就好点了 -_-
Perl, Shell, php这些脚本语言都不难学,但是正因为不难学,所以平时学习的时候稍加理解就会了,这样也就导致理解程度不深。所以有些基础之后要多看,多写代码,加深理解。
前辈们教导得是,我个人对ksh比较熟悉,但是总觉得大家都说perl好用,所以想了解一下。 以后还请大家多多关照。谢谢回答。
对于第四个问题我还是不太明白
/\b\+\b/;
其中\b表示边缘,最边上的两个/表示范围界定。
那加号前面那个\是什么意思啊?
谢谢
转义“+”符号
解释得好详细啊。
明白   再次感谢