Perl的DATA文件句柄
有太多次写完一个perl程序,需要另外新建一个文件来测试,每次觉得很繁琐,但又不得不这么做。没想到原来perl已经提供了解决方案,这就是DATA。
使用很简单,见下面这个例子:
#!/usr/bin/perl
while (<DATA>) {
print;
}
__DATA__
hello perl
输出结果: hello perl
这个用法太方便太perl了,以后再也不需要使用新建文件的笨方法了。
下面是解释:
<IN>可以从打开的句柄IN中获得数据,<STDIN>可以从标准输入接收数据,类似地,<DATA> 文件句柄可以直接从执行它的脚本中获取数据,而不是从命令行或者从另一个文件里获取。<DATA> 所读取的数据保存在每个脚本末尾的特殊常量__DATA__之后,同时这个常量也标志着脚本的逻辑结束。
注意:脚本中有两个while(<DATA>)将只有前一个起作用,因为前一个已经读到了文件结尾。比如以下示例:
#!/usr/bin/perl -w
use strict; while (<DATA>) {
print "$_";
} while (<DATA>) {
print;
} __DATA__
hello world
输出结果:
hello world
而不是:
hello world
hello world
__DATA__
A Virtual File In Perl
It has been occurred a lot of times that one has to test a code using data from a file. It can be anything like checking for a pattern in a file to taking some input. If you want to check the code without opening the file and reading it. One can use the __DATA__ marker provided by perl as a pseudo-datafile.
Steps to follow:
1) At the end of the code use __DATA__ marker and copy paste or write the contents of the file you wish to test exactly from the next line of _DATA_.
2) Use while (){ -- your code here -- }.
#!/usr/bin/perl
use strict;
use warnings;
while () {
chomp $_;
print "Found" if $_ =~ /(t\w+)/;
print $1;
}
__DATA__
hello there how r u
Output of the above program will be “there”.
Perl的DATA文件句柄的更多相关文章
- perl 通过<<和文件句柄将数据写入到文件中去
可以通过文件句柄和<<运算符将文件内容写入到文件中去 #!usr/bin/perl -W use strict; use Spreadsheet::ParseExcel; use utf8 ...
- perl学习之文件句柄filehandle
句柄handle 分为文件句柄和目录句柄,文件句柄实际上包含文件,进程和套接字的读写. 文件句柄的操作步骤 open(FD,"filename"); @lines=<FD ...
- Perl的IO操作(1):文件句柄
文件句柄 文件句柄用来对应要操作的文件系统中的文件,这么说不太严谨,但比较容易理解.首先为要打开的文件绑定文件句柄(称为打开文件句柄),然后在后续的操作中都通过文件句柄来操作对应的文件,最后关闭文件句 ...
- Perl文件句柄相关常量变量
文件句柄相关变量 对应的官方手册:http://perldoc.perl.org/perlvar.html#Variables-related-to-filehandles 默认情况下: $/:输入行 ...
- Perl输出复杂数据结构:Data::Dumper,Data::Dump,Data::Printer
输出复杂结构 Data::Dumper.Data::Dump.Data::Printer都可以用来输出复杂的数据结构.本文只介绍简单的几个输出形式,以后再需要的地方再详细介绍. 前两者建议传递数据结构 ...
- perl学习(5) 输入和输出
1.1. 从标准输入设备输入 <STDIN> 行输入操作在到达文件的结尾时将返回undef,在while循环的条件中不能使用chomp: while (defined($line = &l ...
- perl常用代码
字符串联结和重复操作符 联接: . 重复:x 联接且赋值(类似+=): .=例: $newstring = "potato" . "head"; $ ...
- perl 学习笔记
一:基础 1:安装perl centos: yum -y install perl 官网:https://www.perl.org/ 升级到5.22:先下载,执行./i ...
- Perl IO:简介和常用IO模块
三篇Perl IO基础类文章: Perl的IO操作(1):文件句柄 Perl的IO操作(2):更多文件句柄的模式 Perl文件句柄相关的常见变量 IO对象和IO::Module家族模块 无论是哪种高级 ...
随机推荐
- 转 毛笔字教程ps
跟大家分享一下毛笔字怎么做出来的,主要通过字体和素材叠加,十分简单,喜欢的一起练习.做完记得交作业. 先看看最终效果: 在网上是不是经常看这些碉堡了的毛笔感觉是不是很羡慕啊,现在我就教大家怎么做出这样 ...
- c语言字符串大小写字母转换
输入一个以#结束的字符串,本题要求将小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其它字符不变. 输入格式: 输入在一行中给出一个长度不超过40的.以#结束的非空字符串. 输出格式: 在一 ...
- Azure Cloud中的Log4Net设置
这里的Cloud包含Worker Role和Web Role,Role是运行在云主机中的,这里的主机和VM有所不同,Windows Azure Role Architecture.我们并没有和本地服务 ...
- dom 关键字提示
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 前端复习-03-接上面ajax跨域问题的解决与探索
废话不多少 ..我估计一万个人都搞不清楚 什么是跨域 然后就被这堵墙无情的挡住了..我尝试了很多办法解决这个问题.后来再慕课网上的一个老师的ppt那里看到一张图 我觉得 能记住这张图的话 应该就算是深 ...
- Linux下的paste合并命令详解
paste单词意思是粘贴.该命令主要用来将多个文件的内容合并,与cut命令完成的功能刚好相反. 粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相同.paste将按行将不同文件行信息放在一 ...
- SpringBoard
[SpringBoard] Springboard, or Home Screen, is the standard application that manages the iOS home scr ...
- HDU 4618 Palindrome Sub-Array (2013多校2 1008 暴力)
Palindrome Sub-Array Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Oth ...
- chrome浏览器插件window resizer调试webapp页面大小
chrome浏览器插件window resizer可以调整当前浏览器分辨率大小 可以自定义大小,以适合于andorid和iphone设备
- IIS中的上传目录权限设置问题
虽然 Apache 的名声可能比 IIS 好,但我相信用 IIS 来做 Web 服务器的人一定也不少.说实话,我觉得 IIS 还是不错的,尤其是 Windows 2003 的 IIS 6(马上 Lon ...