您的位置:首页 > 其它

perl的输入与输出

2017-05-15 15:15 148 查看
读取标准输入():键盘输入,回车分行,Ctrl+C截止

    例:

       while(){

           print "I saw $_";

       }

       foreach(){

           print "I saw $_";

       }

   简单写法,将输入处理到结尾,不同的是while是取一行处理一行,foreach是全部取出之后再一行行处理。都是每一行作为一条数据,存在默认变量$_中。

钻石操作符(<>):

    例:

       while(<>){

           chomp;

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

       }

   它可以读取一个文件(一行行读取),每一行存在默认变量$_中,需要在执行的时候给出要操作的文件。

   在windows中的操作方法:打开cmd,输入:perl程序.pl 处理文件1 处理文件2... (可以有更多要操作的文件,如果不在当前目录下,要把程序和处理文件的绝对路径写下来)。

调用参数:

   因为调用的文件(注意是文件,也就是cmd运行时要操作的那一串文件)都是事先存放在@ARGV数组中,所以如果改变了@ARGV,无论你调用什么参数执行,只会执行你改变后的文件,如在代码中加入下面一行:

   @ARGV = qw # F:/EditPlus/old/a.txtF:EditPlus/old/b.txt#

   这样,无论你执行是的参数是什么,都会且只操作a.txt和b.txt

输出到标准输出(print):

    ①print "字符串", n+m, "字符串"; ——无论是字符串,表达式,还是标量都可以一起输出出来

    ②print @数组名; —— 无间隔把数组打印出来

       print "@数组名"; ——先把数组变成字符串,即以空格分隔成一个字符串,再输出,因此这种有间隔

       print "@数组名\n"; —— 有换行符输出

    ③print <>; ——输出文件内容,相当于unix下的cat

       print sort <>; —— 排序输出文件内容

    ④ print的返回值是0或1,代表输出是否成功,一般返回1

    ⑤print后面有括号的时候,像函数,那就是函数

       例:print (2+3)*4; 相当于
(print(2+3))*4,结果为4(因为print返回值为1)。用print时要记得它本身是有括号的,只是可以省略。


用printf格式化输出:


   可以像C语言一样,用格式字符串(如%s,%d,M等)

    %g ——浮点数,整数,指数

    %d ——十进制整数(如果放入格式之前是小数,就会舍去小数,是舍去,不是四舍五入)

    %s ——字符串

    %f ——浮点数(会四舍五入,可以指定小数点后的位数)

    %% ——%

   除了%f和%%都可以带数字,表示数的长度,正数的话,多出的位数空格往左加,负数空格往右加,%f如果加数字,第一个数字是长度,第二个数字是小数的位数,以“.”分开。

   例:〇代表空格

       printf "m\n",42; —— 〇〇〇〇42

       printf "%-10s\n","abcde"; —— abcde〇〇〇〇〇

       printf ".3f\n",6*7+2/3; —— 〇〇〇〇〇〇42.667

数组和printf:

   例:printf "The itemsare:\n".("s\n"x@items),@items;

   第1个@items是数组长度,就是要把s\n重复3次,第2个是数组的值,这样即使不确定数组元素个数也能格式化输出。

文件句柄:

   用来以固定格式输入输出。

   命名规范:虽然没有特殊要求,但尽量全大写命名,避免与保留字冲突。

   6个特殊文件句柄:STDIN、STDOUT、STDERR、DATA、ARGV、ARGVOUT

创建文件句柄(打开):

   文件句柄只要打开,就可以定义他的名字和执行方式,使用open。

    例:

       open CONFIG, 'dion'; ——打开,名为CONFIG文件句柄,指向文件dino

       open CONFIG, ' —— 指定了它是读取文件

       open Bedrock, '>fred'; ——指定输出到新文件,如果是有这个文件,清除原文件

       open LOG, '>>logfile'; ——以追加的方式写入,没有,新建文件,如果存在,添加到最文件后面

以二进制的方式读写文件句柄:

   binmode 文件句柄名, '编码方式';

    例:

       binmode STDOUT, ':encoding(UTF-8)'; ——读写都能用

    关闭文件句柄:close文件句柄名; (通常都会自动关闭)

用die处理致命错误:

   一般处理文件都会返回一个状态,非0代表不成功,只有0是成功,因此可以判断它不是0的时候用die()方法终止程序。

    例:

       if(! open LOG,'>>','logfile'){

           die "Can not create logfile:$!";

       }

   $!是错误信息,后面还会自动加程序名和行号

用warn送出警告信息:

   和die差不多,只是不会终止。

自动检测致命错误:

   use autodie;  ——如果open失败,自动启动die

使用文件句柄:

    例:

       if(! open PASSWD,"/etc/passwd"){

           die "How did you get logged in ?($!)";

       }

       while(){ #<>表示一行行读,PASSWD文件句柄

          
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: