求助 !

求助 !

求助 !
my $request=<>;
my (@header,$body);
while (<>) {
push @header,$_ if 1../^$/;
$body.=$_ if /^$/..eof;

}
###########
中的 1../^$/ /^$/..eof 什么意思? 谢谢!
1 是不是 第一行的意思 1 是不是 第一行的意思
eof 是不是末行的
是的,从 perldoc perlop .
是的,从 perldoc perlop 中对 Range Operators 的描述来看,理论上
if 1 .. /^$/ 的意思是,如果当前读取的行在第一行至第一个空行之间,则 if 为真,否则为假
if /^$/ .. eof 的意思是,如果当前读取的行在第一个空行到文件尾之间,则 if 为真,否则为假

[b][color=red]以下这段描述由于本人调试时疏忽,是错误的,感谢 flw 的提醒[/color][/b]
[quote]
但是据实际实验, if 1 .. /^$/ 总是返回假,似乎 perl 并没有将 1 当作行号来看,如果将 1 改为 2,就能得到所期望的结果((无论 win 还是 linux 上都这样,perl 版本 5.8.8))... 很奇怪的呵呵,不知道是不是bug
有知情人吗?或者得去 perl 新闻组问问
[/quote]




   

TNT 在胡说些什么呢?--.
TNT 在胡说些什么呢?
[quote]D:\MoChou>perl -e "print $]"
5.008008
D:\MoChou>type ttt.pl
while(<DATA>){
print if 1../^$/;
}

__END__
a
b
c
d
e

f
g
h
i

D:\MoChou>ttt
a
b
c
d
e


D:\MoChou>[/quote]
汗,你用楼主的代码试试便�
汗,是我错了,不过你用楼主的代码试试便知,但是确实不是 perl 的 bug,仔细看看楼主的代码便弄明白了...
[quote][color=red]my $request=<>;[/color]
my (@header,$body);
while (<>) {
print if 1../^$/;
print if /^$/..eof;

}[/quote]
就是红色部分的代码,因为文件第一行已经被读出去了,所以后面 while 内循环的第一条 if 1 .. /^$/ 无法满足.不好意思,昨天刚买了台 Dell D20 乐过头了,没有仔细看代码,误导了大家,就此改正,谢谢 flw :-P