perl 文件句柄DATA

Posted 白鸟li

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了perl 文件句柄DATA相关的知识,希望对你有一定的参考价值。

 

复制代码
1 #!/usr/bin/perl
2 
3 while (<DATA>) {
4         print;
5 }
6 
7 __DATA__
8 hello perl
复制代码

 

输出结果: hello perl

这个用法太方便太perl了,以后再也不需要使用新建文件的笨方法了。

下面是解释:

<IN>可以从打开的句柄IN中获得数据,<STDIN>可以从标准输入接收数据,类似地,<DATA> 文件句柄可以直接从执行它的脚本中获取数据,而不是从命令行或者从另一个文件里获取。<DATA> 所读取的数据保存在每个脚本末尾的特殊常量__DATA__之后,同时这个常量也标志着脚本的逻辑结束。

注意:脚本中有两个while(<DATA>)将只有前一个起作用,因为前一个已经读到了文件结尾。比如以下示例:

 

复制代码
 1 #!/usr/bin/perl -w
 2 use strict;
 3 
 4 while (<DATA>) {
 5         print "$_";
 6 }
 7 
 8 while (<DATA>) {
 9         print;
10 }
11 
12 __DATA__
13 hello world
复制代码

输出结果:

     hello world

而不是:

     hello world

     hello world

以上是关于perl 文件句柄DATA的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Perl 的 system() 的输出重定向到文件句柄?

文件句柄怪癖 Perl

Perl 中文件句柄的内置名称是啥?

Perl - Win32 - 如何从另一个进程非阻塞读取文件句柄?

perl open函数

Perl基础命令---文件句柄基础