Chinaunix

标题: 怎么定义伪文件句柄 [打印本页]

作者: coldrainsunc    时间: 2007-05-09 14:13
标题: 怎么定义伪文件句柄
难道下面定义的伪文件句柄不对吗?
  1. #!/usr/bin/perl
  2. use warnings;
  3. use strict;

  4. my @hostlist;
  5. @hostlist=<DATA>;
  6. …………
  7. …………

  8. _DATA_
  9. 127.0.0.1       本机
  10. 192.168.1.23   工位网关
  11. …………
  12. …………
  13. www.baidu.com   百度
  14. _END_
复制代码

可是运行时
Number found where operator expected at ./netping.pl line 33, near "_DATA_
127.0.0.1"
        (Missing semicolon on previous line?)
syntax error at ./netping.pl line 33, near "_DATA_
127.0.0.1"
Unrecognized character \xB1 at ./netping.pl line 33.


望兄弟们不吝赐教,多谢!
作者: coldrainsunc    时间: 2007-05-09 14:16
搞定了,不好意思,书上看得不是很清楚,原来有两个下划线
__DATA__
数据
__END__
作者: coldrainsunc    时间: 2007-05-09 14:18
有一点搞不明白,如果我想在一个文件中定义两个伪文件句柄该怎么做?
作者: 福瑞哈哥    时间: 2007-05-09 14:32
原帖由 coldrainsunc 于 2007-5-9 14:18 发表
有一点搞不明白,如果我想在一个文件中定义两个伪文件句柄该怎么做?


好像不行,等Perl 6吧。
作者: coldrainsunc    时间: 2007-05-09 14:33
唉,难过了!呵呵!
作者: coldrainsunc    时间: 2007-05-09 14:36
只能将两块数据合在一起,在读入数据的时候再分开吧!
作者: 福瑞哈哥    时间: 2007-05-09 14:38
注意使用了__DATA__,不需要在最后加一个__END__,这两个在你的代码中是同义的。
作者: coldrainsunc    时间: 2007-05-09 14:51
__END__
标记数据的结束
如果没有的话数据定义至文件结尾
作者: 福瑞哈哥    时间: 2007-05-09 14:55
__END__标记main程序的结束,数据段的开始。你可以把__DATA__换成__END__
作者: gsging    时间: 2007-05-09 14:56
原帖由 coldrainsunc 于 2007-5-9 14:51 发表
__END__
标记数据的结束
如果没有的话数据定义至文件结尾


楼主写个程序试试看你说的对不.
作者: coldrainsunc    时间: 2007-05-09 15:02
哦,确实是我错,不好意思!

理解有误,惭愧

原文

__DATA__标记的后面出现了__END__标记,那么在遇到__END__标记之后立刻结束数据的定义,否则,如果没有出现__END__标记,数据定义将直到文件的结尾处结束。


__DATA__
数据
__END__
A comment - this is neither part of the program nor the data (but see below ……)

[ 本帖最后由 coldrainsunc 于 2007-5-9 15:06 编辑 ]
作者: 福瑞哈哥    时间: 2007-05-09 17:25
原帖由 coldrainsunc 于 2007-5-9 15:02 发表
哦,确实是我错,不好意思!

理解有误,惭愧

原文

__DATA__标记的后面出现了__END__标记,那么在遇到__END__标记之后立刻结束数据的定义,否则,如果没有出现__END__标记,数据定义将直到文件的结尾处结 ...


我觉得你的这段说明跟我的Perl情况不符,我的__DATA__之后全都是数据段。
作者: coldrainsunc    时间: 2007-05-09 17:42
也许书写错了

  1. #!/usr/bin/perl


  2. $/='';
  3. $hello=<DATA>;
  4. print "$hello";

  5. __DATA__
  6. hello
  7. world
  8. over
  9. __END__
  10. can you see me?
复制代码



[root@supersun network]# perl c.pl
hello
world
over
__END__
can you see me?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2