请教2个问题

请教2个问题

1、
原文是:
$string="i love perl";
 $string=~s/(i)(perl)/<$1><$2>/;
在这个范例中,会把i变成<i>;perl变成<perl>,此时$string="<perl> love <i>";   

问题:
我在运行这个程序:
$string="i love perl";
 $string=~s/(i)(perl)/<$1><$2>/;
print "$string\n";
输出结果怎么是4294967295

2、
原文:
范例一:
 $string="chmod711cgi";
 $string=~/(\W)\s+(\d+)/;
第一个(\W+)是代表找寻数个字母,并将的找到的字符串指派给$1这个变量,而\s+代表找寻多个空白的字符串,最  后(\d+)代表找寻个数值,并将所找到的字符串指派给$2这个变量。所以$1="chmod";$2=711;但是$string还是等于原来的字符串,没有改变。

问题:
(\W+)是代表找寻数个字母???         \W+不是代表寻找数个非字母或数字吗?
它这个赋值$1 $2为什么会是这个结果
谁可以解释一下 谢谢!

另外问一下:perl在进行多行输入时 结束标记是什么

1.

QUOTE:
$string="i love perl";
 $string=~s/(i)(perl)/<$1><$2>/;
在这个范例中,会把i变成<i>;perl变成<perl>,此时$string="<perl> love <i>";  

如果范例是这样, 那么范例是错的, 因为: $string中不存在iperl子串


2.
分清\W和\w


3.
多行输入结束标记和Perl没有关系, 和终端有关系.
Windows的cmd是ctrl+z或F6回车
Linux是Ctrl+d


QUOTE:
原帖由 Lonki 于 2007-11-24 11:41 发表
1.

如果范例是这样, 那么范例是错的, 因为: $string中不存在iperl子串


2.
分清\W和\w


3.
多行输入结束标记和Perl没有关系, 和终端有关系.
Windows的cmd是ctrl+z或F6回车
Linux是Ctrl+d

第一个问题:范例错了 但是为什么我的输出结果是4294967295呢?
第二个问题:第一个(\W+)是代表找寻数个字母???                            怎么理解

$string=~s/(i)(perl)/<$1><$2>/;   这个显然错了
天知道你的为什么输出数值

\W 是非字母

你看的什么?


QUOTE:
原帖由 redicaps 于 2007-11-24 13:37 发表
$string=~s/(i)(perl)/<$1><$2>/;   这个显然错了
天知道你的为什么输出数值

\W 是非字母

你看的什么?

\W 是非字母
书上写的\W是非字母和数字啊


QUOTE:
原帖由 redicaps 于 2007-11-24 13:37 发表
$string=~s/(i)(perl)/<$1><$2>/;   这个显然错了
天知道你的为什么输出数值

\W 是非字母

你看的什么?

书上的那个范例到底对不对,错 错在哪里
原文是:
$string="i love perl";
 $string=~s/(i)(perl)/<$1><$2>/;
在这个范例中,会把i变成<i>;perl变成<perl>,此时$string="<perl> love <i>"
把这书焚了, 去搜"正则表达式30分钟"


QUOTE:
原帖由 Lonki 于 2007-11-24 15:09 发表
把这书焚了, 去搜"正则表达式30分钟"

我不是秦始皇啊
\w 指 [a-zA-Z0-9_]
\W指非 \w