`
deepfuture
  • 浏览: 4400598 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80078
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:70050
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103360
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:285828
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15014
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67570
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32155
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45991
社区版块
存档分类
最新评论

Perl处理输入输出-2

阅读更多

声明:本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载 

 6.say、print、<STDIN>与Chomp
 2个新疑问产生了,这里为什么不用say,好吧,我们通过下面的小例子解释这一切
新建一个perl1-4.txt的文本文件,内容如下:
第1行
第2行
第3行
第4行
我们分别用say和print完成对这个文件的读取
say版本:

#perl1-4.pl
#笔者的ActivePerl安装在d盘下
use 5.010;
open FH,'<./perl1-4.txt';
@mytexts=<FH>;
foreach  $mytext(@mytexts){
  say $mytext;
}
程序运行结果如下:
第1行

第2行

第3行

第4行

print版本:
#perl1-5.pl
#笔者的ActivePerl安装在d盘下
use 5.010;
open FH,'<./perl1-4.txt';
@mytexts=<FH>;
foreach  $mytext(@mytexts){
  print "$mytext";
}
程序运行结果如下:
第1行
第2行
第3行
第4行
say版本在每行后输出一个回车换行,因为perl1-4.txt文件本身每行有一个换行符,因此,每读取文件一行就会多输出1行,这也是say和print的主要区别。某些情况下,我们并不需要换行符,即使有换行符也要去掉,有一个函数能帮我们这个忙:chomp。我们打开 perl1-5.txt,可以看到内容如下:
西红柿
黄瓜
丝瓜
冬瓜
白菜
鸡蛋
我们完成一个小任务,将这些人名在一行内输出
#perl1-6.pl
use 5.010;
open FH,'<./perl1-4.txt';
@mytexts=<FH>;
foreach  $mytext(@mytexts){
  chomp($mytext);
 print “$mytext,”;
}
输出如下:
西红柿 黄瓜 丝瓜 冬瓜 白菜 鸡蛋
因为foreach循环一次,从@mytexts中取得下一个元素放在$mytext中,这个过程并不包括删除每个元素的换行符,这个例子中每个元素就是一行,自然包括换行符,所以必须要使用chomp函数去掉末尾的换行符:chomp($mytext)。
Chomp还有一个地方用得最多,就是接受用户输入时。Perl处理用户键盘输入的语句形式如下:
变量=<STDIN>
我们先看一段程序,这段程序的本意是接受用户输入,并将用户和用户的表妹的年纪在一行内显示出来。
#perl1-7.pl
print "你表妹多大了?";
$myinput1=<STDIN>;
print "你今年多大了?";
$myinput2=<STDIN>;
print "你的年纪是$myinput1,";
print "你表妹的年纪是$myinput2。";
$myinput=<STDIN>;
上面程序中的$myinput1=<STDIN>表示接受输入,并将输入的内容赋值给$myinput1。输出结果如下:
你表妹多大了?15
你今年多大了?22
你的年纪是15
,你表妹的年纪是22
程序并没有按想像中的运行,用户和其表妹的年纪在2行内显示出来,因为Perl接受输入,但并不包括清除用户完成输入最后敲入的换行符。因为应去掉$myinput1所含的换行符。程序修改如下:
#perl1-8.pl
print "你表妹多大了?";
$myinput1=<STDIN>;
print "你今年多大了?";
$myinput2=<STDIN>;
chomp($myinput1);
print "你的年纪是$myinput1,";
print "你表妹的年纪是$myinput2";
输出结果如下,任务完成。
你表妹多大了?15
你今年多大了?22
你的年纪是15,你表妹的年纪是22。
7.读取每行的多列数据
上面的例子涉及的都是单列数据,而多数情况下,我们需要读取文件的多列数据。
我从朋友那得到一份北京现代汽车的报价清单,做为消费者,想从中挑选出10-15万的车型,并显示出来。
清单文件为perl1-9.csv,内容如下:
伊兰特 悦动1.6GL手动舒适型2010款,9.98
伊兰特 悦动1.6GL自动舒适型2010款,10.88
伊兰特 悦动1.6GLS手动豪华型2010款,10.98
伊兰特 悦动1.6GLS自动豪华型2010款,11.98
伊兰特 悦动1.8GLS手动豪华型2010款,12.18
伊兰特 悦动1.8GLS自动豪华型2010款,12.98
……
…...
仔细观察可以发现,型号和价格是用“,”分隔,我们再次使用split函数。
#perl1-9.pl
use 5.010;
open CAR,'<.\perl1-9.csv';
foreach $carmes(<CAR>){
   ($name,$price)=split(',',$carmes);
       chomp($price);
       say "$name:$price万" if $price<15 and $price>10;
}
close CAR;
程序运行结果如下(……表示以下有若干行省略没列出):
伊兰特 悦动1.6GL自动舒适型2010款:10.88万
伊兰特 悦动1.6GLS自动舒适型2010款:10.98万
伊兰特 悦动1.6GLS自动豪华型2010款:11.98万
伊兰特 悦动1.8GLS手动豪华型2010款:12.18万
伊兰特 悦动1.8GLS自动豪华型2010款:12.98万
……
……
 

 

 

1
0
分享到:
评论

相关推荐

    perl文件用法

    4. **输入/输出** - 使用`open`函数打开文件,然后通过`或`&gt;`操作符读写文件。 - `&lt;&gt;`运算符可以逐行读取文件,例如`while () { ... }`。 5. **正则表达式** - Perl是正则表达式的强大工具,可以使用`=~`操作符...

    单行Perl教程

    -n选项使得Perl在处理输入文件的每一行时会执行指定的代码块,但不会自动打印每行。该选项通常和后面的代码块配合使用,例如: ```perl $ ls -lAF | perl -nle 'print if -f $_' ``` 上面的命令会输出当前目录下所有...

    Perl开发环境.zip

    2. **环境变量**:安装完成后,Strawberry Perl会自动将Perl的bin目录添加到系统的PATH环境变量中,这样你就可以在命令行中直接运行Perl命令了。 3. **验证安装**:打开命令提示符,输入`perl -v`,如果显示出Perl的...

    PERL帮助文档-网页版-基础教程

    在Perl中,与文件和输入/输出流打交道非常简单。文档会介绍打开、关闭文件、读写操作,以及文件处理函数如fopen、fclose、feof等。 7. **模块和CPAN** Perl拥有一个庞大的标准库和第三方模块库CPAN...

    Perl-Format-String-Bugs.zip_Bugs

    Perl是一种强大的脚本编程语言,尤其在文本处理和系统管理任务中广泛应用。在Perl中,`printf`函数家族是用于格式化输出的...如果你正在处理涉及用户输入和`printf`函数的Perl代码,这份文档将是一份宝贵的参考资料。

    Perl语言入门-第六版-中文版-盛春译

    4. **文件和I/O操作**:学习如何读写文件,处理输入/输出流,以及使用各种文件测试操作符检查文件状态。 5. **模块和CPAN**:Perl的模块系统允许开发者复用代码,提高效率。CPAN(Comprehensive Perl Archive ...

    Perl-by-Example.rar_Perl_Perl by Example_beginners_perl example

    Perl提供了丰富的文件和输入/输出(I/O)函数,可以方便地读写文件、处理标准输入输出。例如,下面的代码会读取并打印一个文件的内容: ```perl open(my $fh, ', 'filename.txt') or die "Cannot open file: $!"; ...

    周末速成课程-Perl

    3. 安装完成后,可以通过命令行输入 `perl -v` 验证安装。 ##### 对于 Unix/Linux 用户: 1. 访问 [Perl 官方网站](http://www.perl.com/pub/language/info/software.html#stable) 获取最新版本。 2. 使用以下命令...

    PERL参考大全-适合参考

    4. **输入/输出**:标准输入、输出和错误处理,以及重定向和管道操作。 5. **模块的使用**:介绍如何安装和使用CPAN上的模块,以及编写自己的模块。 6. **面向对象编程**:讲解如何创建和使用Perl的类和对象。 7. **...

    Perl Programming - Basic

    内置函数涵盖了字符串处理、正则表达式、数字运算、数组和列表操作、哈希处理以及输入/输出控制等方面的功能。 #### 引用与解引用 - **标量引用**:指向一个标量值的引用。 - **数组引用**:指向数组的引用。 - **...

    神奇的perl-最佳Perl入门

    ### 知识点三:输入输出处理 #### 第一个Perl任务 - 通过读取文件、处理数据并输出结果来完成第一个任务。 #### 文件处理原则 - 使用文件句柄(如`$fh`)打开文件,使用`open`函数。 - 读取文件通常使用`&lt;&gt;`操作...

    perl入门 1-12

    8. **文件输入/输出**:Perl提供了简单易用的文件处理功能,包括打开、读取、写入和关闭文件,以及文件指针和缓冲区的概念。 9. **数组和哈希操作**:了解如何创建、遍历、修改和操作数组和哈希,是处理复杂数据...

    Teach Yourself Perl 5 in 21 days

    - 使用Perl处理命令行参数。 - **第5天:正则表达式** - 正则表达式的语法。 - 在Perl中匹配和替换字符串。 - 实战案例:文本分析与过滤。 #### 第二部分:高级主题 - **第6天:模块与包** - 模块的概念及其...

    perl-scripts实例.tar.gz

    - 标准输入输出:`&lt;&gt;`从键盘或文件读取,`print`向屏幕或其他文件输出。 4. **模块**: - CPAN(Comprehensive Perl Archive Network)是Perl模块的仓库,提供成千上万的预编译模块,方便开发者复用代码。 - `...

    perl入门教程.pdf

    从给定的文件信息来看,这是一份关于Perl语言入门的教程,主要涵盖了Perl语言的基础知识、数据类型、控制结构、子程序、输入输出以及哈希等核心概念。以下是对这些知识点的详细解析: ### 一、Perl语言简介 #### ...

Global site tag (gtag.js) - Google Analytics