曲径通幽论坛

标题: DATA 文件句柄 [打印本页]

作者: beyes    时间: 2011-10-24 21:24
标题: DATA 文件句柄
<STDIN>
句柄用来从标准输入接收数据,而 <DATA> 文件句柄则可以从执行它的统一脚本中直接获取数据,而不是从命令行中或者是从另一个文件里获取。

<DATA> 所读的数据保存在每个脚本末尾的特殊常量 __DATA__ 之后。__DATA__ 也同时标志了脚本的逻辑结束。每当从读取 <DATA> 一行内容后,这些内容就放在默认的特殊变量 $_ 中。

比较下面代码:

[code=perl]#!/usr/bin/perl


while (<DATA>) {
        print if /perl/;     #只打印匹配有 perl 的行
}
__DATA__
hello world
hello perl
good perl
great perl[/mw_shl_code]
运行输出:
$ ./data.pl
hello perl
good perl
great perl
又如:
[code=perl]

#!/usr/bin/perl


$_ = <DATA>;
        print "$_";




$_ = <DATA>;
        s/(perl)/\U$1/;
        print "$_";
__DATA__
hello world
hello perl
good perl
great perl
[/mw_shl_code]
运行输出:
$ ./data.pl
hello world
hello PERL
又有:
[code=perl]

#!/usr/bin/perl


while (<DATA>) {
        print "$_";
}


while (<DATA>) {
        print if /perl/;
}
__DATA__
hello world
hello perl
good perl
great perl
[/mw_shl_code]
运行输出:
$ ./data.pl
hello world
hello perl
good perl
great perl
由上面程序可以看到,虽然有两个读入 <DATA> 的 while 循环,但在默认情况下只能是第一个其作用,因为它已经读取到文件末尾。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2