例子:读取in.txt文件,如果读取失败,则打印“con not open file1",并结束。
open(file1,"< in.txt") or die "con not open file1";
格式 < 表示读取,>表示写入,>>表示追加
open(文件句柄,"< 文件名.txt") or die "con not open file1";
open(file2,"> in.txt") or die "con not open file2";
将< 换成 >即可。
while(<file1>){
chomp; #去掉每一行的换行
#$_表示一个自增的变量,在这里表示每一行打印完,自动计数到下一行
print file2 $_;#把当前行去掉换行符后,打印到file2里
close (file1);
close(file2);
open(file1, "< in.txt") or die "con not open file1";
open(file2, "> out.txt") or die "con not open file2";
while( <file1> ){
chomp;
print file2 $_;
}
close( file1 );
close( file2 );
$_ :默认的输入、输出和格式匹配空间(默认参数的意思,不指定时,为程序处理的上一个变量)
chomp :去掉字符串末尾的&/,默认情况下 $/为\n(默认情况下,去掉换行符)
文件的一些操作
读:open(文件句柄,”<文件名“)或者直接open(文件句柄,”文件名“)
文件必须已经事先创建好,否则会返回0,打不开。
写:open(文件句柄,”>文件名“)
文件若不存在,那么创建;若存在,内容清空,写入全新的数据;
追加:open(文件句柄,”>>文件名“)与写类似,不同点在于:内容不会被清空,新内容追加到原文后;
读写:open(文件句柄,”+<文件名“):可读可写,通过tell()函数在文件内部移动;通过seek()函数进行定位。若文件不存在,则创建;若文件存在,原来的数据不会被清除。
例子:有下面四个人,他们名字分别是 Li Fei,Liu Qiang,Zhuang Ming,Tian Hua,写一个 Perl 程序,做到输入他们的姓,就能告诉这个人的名。
哈希是 key/value 对的集合。
Perl中哈希变量以百分号 (%) 标记开始。
访问哈希元素格式:${key}。
%hash();
$hash{Li} = "Fei";
$hash{Liu} = "Qiang";
$hash{Zhang} = "Ming";
$hash{Tian} = "Hua";\
my $a;
while (1) {
print "Enter Xing:";
$a = <STDIN>; #获取键盘输入
chomp $a;
if($a ~~ "Exit") {
die "Exit System\n";
}
else {
print $hash{$a};
print "\n";
}
例子:用 python 或者 perl 写程序,在 xxx.log 中找到 fail 单词
读取“xxx.log”文件,如果打不开,就直接结束 die
文件操作时 < 表示读取,> 表示写入,>> 表示追加
如果读取成功,则返回一个不为 0 的数,作为判断依据
my $value; #声明一个变量
$value = open(file1,"<xxx.log>");#读取文件xxx.log到file1,<代表读取
#如果不为0,说明打开了
if($value){
print "open\n\n";
}
else {
#否则,没有成功打开,die结束
die "cannot open \n\n";
}
逐行读取文件,并进行正则匹配
my $input_line; #声明一个变量
#while(<文件句柄>),逐行读取
#每一行的值会自动保存在一个$_的特殊变量中
while(<file1>){
#获取当前一行的值,保存在$input_line
$input_line = $_;
#打印当前的行
print "$input_linr\n";
#正则表达式,匹配 m/.../或者/.../
#=~表示匹配,!~表示不匹配
#判断当前行的字符串中有没有“fail",=~ m/fail/
if($input_line =~ m/fail/){ #匹配则成功打印
#$&或$MATCH 表示前一次成功进行匹配的字符串
print "match:$&\n\n";
}
}
关闭文件
close file1;
$_ 默认输入,在文件逐行读取时,就是每次读取的内容
$& 或 $MATCH 上一次成功匹配的字符
=~ 匹配
!~ 不匹配
m/str/ 或/str/ 正则表达式,看是否含有字符串 str
<, >, >> 代表读取、写入、追加