Perl学习笔记(五)--输入与输出

文件句柄

  文件句柄(filehandle)就是程序里代表perl进程与外界之间的I/O联系的名称。不是文件的名称。

打开文件句柄

  Perl提供的默认文件句柄:STDIN、STDOUT、STDERR

   open CONFIG, ‘dino’;                #打开CONFIG文件句柄,让它指向dino
   open CONFIG, ‘<dino’;              #同上,只读打开
   open BEDROCK, ‘>fred’;           #打开文件句柄BEDROCK并输出到新文件fred
   open LOG, ‘>>logfile’;               #以追加方式打开文件

指定数据编码方式

open CONFIG, ‘<:encoding(UTF-8)’, ‘dino’;

 

以特定编码写数据到某个文件

open BEDROCK, ’>:encoding(UTF-8)’, $file_name;

关闭文件句柄

 close BEDROCK;

用die处理致命错误

1 if(!open LOG ,”>>”,’logfile’){
2          die “Cannot create logfile:$!”;                  #$!是可读的系统错误信息
3 }

用die会自动将perl程序名和行号附加在错误信息后面,如果不想要可以加换行符\n去掉

自动检测致命错误  

1 use autodie;

用say来输出

功能和print函数差不多,但在每行内容时会自动加换行符

时间: 2024-08-01 10:46:51

Perl学习笔记(五)--输入与输出的相关文章

perl学习笔记四——输入与输出

读取标准输入 用<STDIN>进行标准输入:chomp($line=<STDIN>); 如果读到文件尾,行输入操作符就会返回undef.便可利用这一性质跳出循环. while(defined ($line=<STDIN>)){ print "I saw $line"; } 简写为: while(<STDIN>){ print "I saw $_ ."; } 注意:这个简写只在最早的写法中才能正常运行,如果将行输入操作符

C++学习笔记之输入、输出和文件

一.流的概念 数据从内存的一个地址移动到另一个地址称为数据流动——流操作 流操作是通过缓冲区(buffer)机制实现的. 缓冲区:内存的一块区域——用作文件与内存交换数据. 数据从文件中读出:文件 → 缓冲区 → 内存 将数据写入文件:内存 → 缓冲区 → 文件 为什么要使用缓冲区而不直接从文件中读取数据到内存或者直接有内存写入文件呢?我们的文件通常都存在磁盘中,程序从磁盘读取一个字符需要大量的硬件活动,速度非常慢.缓冲方法则从磁盘上读取大量信息,将这些信息存储在缓冲区,然后每次从缓冲区里读取一

Java 输入/输出(I/O)学习笔记 -- 文件输入与输出

在保存数据时,可以选择二进制格式或文本格式.例如,整数 1234 存储成二进制数时,它被写为由字节 00 00 04 D2 构成的序列(十六进制表示法) ,而存储成文本格式时,它被存成了字符串" 1234" .尽管二进制格式的 I/O 高速且高效,但是不宜人来阅读. 读写文本数据 在存储文本字符串时,需要考虑字符编码(character encoding)方式.在 UTF-16 编码方式中,字符串" 1234"编码为 00 31 00 32 00 33 00 34

深度学习笔记(五):LSTM

深度学习笔记(一):logistic分类 深度学习笔记(二):简单神经网络,后向传播算法及实现 深度学习笔记(三):激活函数和损失函数 深度学习笔记(四):循环神经网络的概念,结构和代码注释 深度学习笔记(五):LSTM 看到一篇讲LSTM非常清晰的文章,原文来自Understanding LSTM Networks , 译文来自理解LSTM网络 Recurrent Neural Networks 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这篇文章时候,你都是基于自己已经拥有的

PERL学习笔记---正则表达式的应用

使用m//匹配 //这是m//(模式匹配)的一种简写.同qw//操作一样,可以使用任何成对的分隔符.因此,可以使用m(fred), m<fred>, m{fred}, m[fred],或者m,fred,, m!fred!, m^fred^,其它非成对的分隔符也可以 不区分大小写:/i if(/yes/i) {#大小写无关 print “In that case, I recommend that you go bowling.\n”;} 匹配任何字符:/s 默认情况下,点(.)不匹配换行符,这

java之jvm学习笔记五(实践写自己的类装载器)

java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类装载器和安全管理器是可以被动态扩展的,或者说,他们是可以由用户自己定制的,今天我们就是动手试试,怎么做这部分的实践,当然,在阅读本篇之前,至少要阅读过笔记三. 下面我们先来动态扩展一个类装载器,当然这只是一个比较小的demo,旨在让大家有个比较形象的概念. 第一步,首先定义自己的类装载器,从Clas

小猪的数据结构学习笔记(五)

小猪的数据结构学习笔记(五) 线性表之--循环链表                           --转载请注明出处:coder-pig 循环链表知识点归纳: 相关代码实现: ①判断是否为空表: ②单循环链表的存储结构 其实和单链表的结构是一样的! /*定义循环链表的存储结构*/ typedef struct Cir_List { int data; struct Cir_List *next; }Lnode; ③初始化循环单链表 代码如下: //1.循环链表的初始化 //表示一个元素,如

Perl学习笔记(一)--简介

1. 查看当前所用Perl版本号 ? 1 perl –v 2.  一个简单的Perl程序 ? 1 2 3 print "hello world"; #这是注释 执行它: ? 1 Perl helloWorld.txt 文件名后缀可以是pl可以是txt 3. 一个稍微复杂点的Perl程序 ? 1 2 3 4 5 6 @line = `perldoc -u -f atan2`; //运行一个外部命令,通过反引号来调用,将输出结果一行行依次存储在@line这个数组变量中 foreach(@l

Swift学习笔记五:循环和条件语句

一.循环语句 1. for循环 1) for -in 循环,对于数据范围,序列,集合等中的每一个元素,都执行一次 for a in 0...5{}    //循环迭代,从a=0到a=5,执行{}里的代码 注意:a只循环中存在,也就是出了{}a就不存在了 或者遍历数组 let a = [1,2,3] for b in a{} //循环迭代,从b=1到b=3 如果你不需要序列中的每一个值,可以使用_来忽略它,仅仅只是使用循环体本身: for _ in 0...5{}    //循环执行{}里的代码,

jQuery源码学习笔记五 六 七 八 转

jQuery源码学习笔记五 六 七 八 转 Js代码   <p>在正式深入jQuery的核心功能选择器之前,还有一些方法,基本都是数组方法,用于遴选更具体的需求,如获得某个元素的所有祖选元素啦,等等.接着是其缓存机制data.</p> <pre class="brush:javascript;gutter:false;toolbar:false"> //@author  司徒正美|なさみ|cheng http://www.cnblogs.com/ru