Perl语言入门——输入与输出

这篇博客介绍了Perl语言中的输入输出操作,包括使用while和foreach读取标准输入,钻石操作符的用法,调用参数,printf格式化输出,数组与printf的结合使用,文件句柄的概念和操作,如打开、关闭文件,以及错误处理和警告信息的输出。还提到了say函数的使用,它是print函数的增强版,自动添加换行符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

读取标准输入:
    while(<STDIN>){
        print "I saw $_";
    }
   
    foreach(<STDIN>){
        print "I saw $_";
    }
注意这两个的实际执行过程略有不同

钻石操作符输入:钻石操作符<>能让程序在处理调用参数的时候,提供类似标准Unix工具程序的功能
钻石操作符是“行输入”操作符的特例,它并不从键盘获得输入,而是从用户指定的位置读取
    while(defined($line=<>)){
        ...
    }
调用参数:钻石操作符其实不会检查调用参数,它的参数来自@ARGV数组,这是有perl解释器事先建立的数组,
其内容就是由调用参数组成的列表。
钻石操作符会查看数组@ARGV以决定该用哪些文件名,如果是空列表,则改用标准输入流
下面程序强制让钻石操作符读取指定的三个文件
    @ARGV= qw# larry moe curly#;
    while(<>){
        chomp;
        ...
    }
使用printf格式化输出:类似于C语言
    %g恰当的数值形式,会按需要自动选择浮点数、整数、指数
    %d十进制整数,舍去小数点后的数字(非四舍五入)
    %s字符串格式
    %f浮点数,按需要四舍五入
    百分号和字母之间可以加数字,表示宽度,若用负数,表示左对齐
数组和printf:一个小技巧
    printf "The items are:\n".("s\n" x @items),@items;
    程序会先输出标题,然后每个元素显示成独立的一行,每行右对齐,字段一律10个字符宽
文件句柄:程序里代表perl进程与外界之间的I/O联系的名字,不一定是文件名
    习惯上用全大写字母来命名文件句柄
    perl六个保留文件句柄STDIN、STDOUT、STDERR、DATA、ARGV、ARGOUT
打开文件句柄:open CONFIG,"dino"; #打开名为CONFIG的文件句柄,让它指向文件dino
    open CONFIG,"<dino"; #此文件只是用来输入的,与上一行完全相同,是默认操作
    open BEDROCK,">fred"; #输入到新文件fred,如果已存在fred,清楚原有内容并以新内容取代
    open LOG,">>logfile"; #已追加方式打开文件
    在新版本perl中,上述都可以写成open CONFIG,"<","dino";的形式
关闭文件句柄:close BEDROCK;
用die处理严重错误:die函数会输出你指定的信息,并让程序立即终止,并返回不为0的退出码
    if (! open LOG,">>logfile"){
        die "Can not create logfile:$!";
    }
    $!是可读的系统出错信息
    die还会自动将perl程序名和行号附加在错误信息后面,上面的出错信息就是
    Can not create logfile:permission denied at your_program line 12.
使用warn输出警告信息:warn函数和die函数功能差不多,不同之处在于最后一步,它不会终止程序的运行。
改变默认的文件输出句柄:默认情况下,如不为print指定文件句柄,它的输出就会送到STDOUT
    可以使用select操作符来改变默认的文件句柄,下面例子输入到BEDROCK文件句柄
    select BEDROCK;
    print ".....\n";
    select STDOUT;
复用标准文件句柄:如果要复用某个文件句柄,perl会自动关闭原有的文件句柄
使用say来输出:5.10新增了say函数,功能和print函数差不多,但是在每行输出的结尾自动加上换行符
    print "hello\n";等同于say "hello";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值