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文件句柄
例:
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文件句柄
相关文章推荐
- Perl 语言笔记(4) -- 输入输出
- Perl学习笔记(4)文件的输出输入
- perl系列:输入与输出
- perl学习——输入和输出
- Perl语言学习笔记 5 输入与输出
- 一行代码解决 perl输入 排序 输出问题
- perl学习(5) 输入和输出
- Perl Learning (5) —— 输入与输出
- perl-标准输入与输出
- perl输入,排序,输出,一行代码解决所有的问题
- Perl的基本输入输出
- leanging perl(二) 输入与输出
- perl学习(5) 输入和输出
- Perl 中的输入与输出
- Perl学习之五:输入与输出
- Perl笔记:04、输入与输出
- mybatis 输入、输出映射
- A.1输入长方形的两边长a和b,输出长方形的周长和面积
- 采用指针访问方式从键盘给数组a[N]输入数据,然后对元素值重新按逆序存放并输出
- 流输入>>、流输出<<作为友元重载