• 文件句柄的几点知识


    6个特殊文件句柄是perl保留的,它们是:STDIN,STDOUT,STDERR,DATA,ARGV,ARGVOUT .

    指定编码方式读取文件

    open CONFG, '<:encoding(UTF-8)','dino';

    encoding(UTF-8) 和只写:utf8的区别,简写方式不会考虑输入或输出数据是否真的是合法的utf-8字符串。
    使用encoding()的形式,还能指定其他类型的编码。我们可以通过下面的命令打印出所有Perl能理解和处理
    的字符编码清单:

    perl -MEncode -le "print for Encode->encodings(':all')"

    如果想要保存得到的文件每行都以CR-LF结尾,就得在该文件时使用特殊层:

    open BEDROCK,'>:crlf', $file_name;

    不过注意,如果原本就是CR-LF风格的话,转换后会多出一个换行符。
    读取DOS风格的文件时也可以这样转换:

    open BEDROCK,'<:crlf', $file_name

    读取文件的时候,Perl会把所有CR-LF都转换为Unix风格的换行符。

    自动检测致命错误
    从Perl5.10开始,为人称道的autodie编译指令已经成为标准库的一部分。
    use autodie;

    将数据输出到文件句柄时,默认情况下都会经过缓冲处理。
    不过将特殊变量$|设定为1,就会使当前的默认文件句柄在每次进行输出操作后立即刷新缓冲区。

    select LOG;
    $|=1 ; # 不要将LOG的内容保留在缓冲区
    select STDOUT;
    print LOG "This gets written to the LOG at once!
    ";

    标量变量中的文件句柄
    从perl 5.6 开始,我们已经可以把文件句柄放到标量变量中,而不必非得使用裸字。别看这点差别,带来的好处可不少。
    成为标量变量之后,文件句柄就可以作为子程序的参数传递,或者放在数组,哈西中排序。不过很多时候我们写的都是应急的短小
    脚本,用裸字更快捷,没必要使用变量存储文件句柄。
    习惯变量名后面添上_sh表示这是用来保存文件句柄的变量:

    open my $rock_fh , '<' , 'rocks.txt';
  • 相关阅读:
    把Orchard部署到Windows Azure Web Sites
    使用Windows Live Writer 发布博客园博客
    使用Microsoft Word 2013 发布Blog到博客园
    Java栈的简单实现
    Java中的运算符
    Java简单双向链表实现 @version 1.0
    Java中的面向对象II
    认识和分析日志文件
    两数之和问题
    括号序列算法
  • 原文地址:https://www.cnblogs.com/tjxwg/p/3314203.html
Copyright © 2020-2023  润新知