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

读取标准输入

用<STDIN>进行标准输入:chomp($line=<STDIN>);

如果读到文件尾,行输入操作符就会返回undef。便可利用这一性质跳出循环。

while(defined ($line=<STDIN>)){

  print "I saw $line";

}

简写为:

while(<STDIN>){

  print "I saw $_ .";

}

注意:这个简写只在最早的写法中才能正常运行,如果将行输入操作符放在其他的任何地方(特别是自成一行),他并不会读取行输入并自动保存入默认变量$_。唯独在while循环中条件表达式里只有行输入操作符的前提下这个简写才起作用。

同样foreach也有这样的用法:

foreach (<STDIN>){

  print "I saw $_";

}

不同之处在于:while每读入一行就处理一行,foreach需要一次性读完再处理。

#!/usr/bin/perl
use strict;
use warnings;

while (<STDIN>) {
    print "I saw $_ \n";
}
foreach  (<STDIN>) {
    print "I saw $_ \n";
}

来自钻石操作符(<>)的输入

可以用钻石操作符编写类似cat、sed、awk、sort、grep、lpr等工具程序。

程序调用参数:$./my_program fred barney betty

如果比提供任何调用参数的话,程序会从标准输入流中采集数据。此外:如果用连字符(-)当作参数,则表示要从标准输入中读入数据。所以假如调用参数fred - betty,那么程序应该先处理文件fred,然后处理标准输入流提供的的数据,最后是betty。

钻石操作符就是行输入操作符的特例。不过他并不是从键盘中读取输入,而是从用户指定的位置读取:

while(defined($line =<>)){

    chomp($line);

    print "It was $line that I saw!\n";

}

如果现在输入的是调用参数是fred、barney、betty那么,输出结果就会是"It was [从文件中读取的一行内容] line  that I saw!"等,直到遇到文件尾结束。注意:<>在读完一个文件后会接着读新的文件,然后在逐行输出内容。应为使用钻石操作符时已经报这些文件合并成一个很大的文件一样,钻石操作符只有碰到所有的输入的结尾时才会返回undef然后跳出while循环。

上面代码简写:

while (<>){

    chomp;

    print "It was $_ that I saw!\n";

}

注意:钻石操作符一般会处理所有的输入,所以在程序中如果看到多个钻石操作符那么通常是错误的。

#!/usr/bin/perl
while (<>){
    chomp;
    print "$_ \n";
}//注意代码中下面执行指令中添加了-,并从grep的输出管道中读入

时间: 2024-11-07 18:54:00

perl学习笔记四——输入与输出的相关文章

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

如何输出格式化的字符串(学习笔记四)

如何输出格式化的字符串(学习笔记四) 我们经常会输出类似 '亲爱的xxx你好!你xx月的话费是xx,余额是xx' 之类的字符串,而xxx的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式. 在Python中,采用的格式化方式和C语言是一致的,用 % 实现,举例如下: >>> 'Hello, %s' % ('world') 'Hello, world' 截图如下: 注: (1)红线上的百分号,两边可有空格也可无: (2)对于只有一个变量的情况,我们可以将'world'外的括号

【Unity 3D】学习笔记四十六:输入与控制——键盘事件

在游戏中,玩家控制主角移动,按键攻击,选择行走.都需要在程序中监听玩家的输入.unity为开发者提供了input库,来支持键盘事件,鼠标事件以及触摸事件.本文主要回顾键盘事件,以后会逐文复习鼠标以及触摸事件. 键盘事件 一般的PC键盘有104个不同的按键,在程序中通过监听这些按键事件,从而进一步执行逻辑操作.如:射击游戏中,W表示前进,S表示后退,A表示左移,D表示右移. 按下事件 在脚本中,用input.GetKeyDown( )方法将按键值作为参数,监听此按键是否被按下.按下返回true,否

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 默认情况下,点(.)不匹配换行符,这

Linux学习笔记四:Linux的文件搜索命令

1.文件搜索命令  which 语法:which [命令名称] 范例:$which ls  列出ls命令所在目录 [[email protected] ~]$ which ls alias ls='ls --color=auto' /bin/ls 另外一个命令:whereis [名称名称],也可以列出命令所在目录. [[email protected] ~]$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/ma

代码管理工具 --- git的学习笔记四《重新整理git(1)》

1.创建版本库 mkdir  创建目录 cd  地址,到该地址下 pwd 显示当前目录 1.创建目录 $ mkdir startGit $ cd startGit $ pwd 显示当前目录 或者cd到桌面,然后再创建目录 2.初始化版本库 $ git init 初始化仓库 提示信息:Initialized empty Git repository in /Users/xingzai/Desktop/startGit/.git/ 建立一个空的git仓库在/Users/xingzai/Desktop

初探swift语言的学习笔记四(类对象,函数)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/29606137 转载请注明出处 假设认为文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! swift扩展了非常多功能和属性,有些也比較奇P.仅仅有慢慢学习,通过经验慢慢总结了. 以下将初步学习一下类的写法. 码工,最大爱好就是看码,而不是文字,太枯燥. // // computer.swift // swiftDemo // // C

CodeIgniter3 内核学习笔记四@Benchmark.php

自动启用的系统基准测试类,位于core/Benchmark.php 用于计算两个标记点之间的时间差,基准测试总是在框架被调用的那一刻开始,在输出类向浏览器发送最终的视图之前结束. 这样可以显示出整个系统执行的精确时间 Benchmark.php CodeIgniter3 内核学习笔记四@Benchmark.php