笔者说过, Perl 语言是非常删除处理文本的, 同样,perl 语言对文件的读写方式也非常简单。
perl 语言对文本文件的读取方式非常便捷, 可以一次性读取,或按流式读取.
当文件比较小的时候, 一次性读取文件所有内容效率更高; 当文件较大时, 可以一行一行读.
#!/usr/bin/perl #Desc 读取/etc/password 内容 #Auth zongf #Date 2019-05-20 $filename = "/etc/passwd"; #打开文件 open $file, "<", $filename or "cannot open file:$filename\n"; #读取文件全部内容 @lines = <$file>; #关闭文件 close $file; #输出文件 print "$_" foreach @lines;当文件内容过多时, 可以采取逐行读取.
#!/usr/bin/perl #Desc 测试perl 逐行读取文本 #Auth zongf #Date 2019-05-20 $filename = "/etc/passwd"; #打开文件 open $file, "<", $filename or "cannot open file:$filename\n"; #逐行读取文件内容 while(<$file>){ print "$_"; } #关闭文件 close $file重复执行两次此脚本, 会发现tmp.txt 文件中始终都是一行内容
#!/usr/bin/perl $filename = "tmp.txt"; #打开文件:清空方式, 打开的同时会清空文件 open $file, ">", $filename or "cannot open file:$filename\n"; #输出字符串到文件中 print $file "hello,world\n"; #关闭文件句柄 close $file;重复执行脚本多次, 没执行一次, tmp.txt 文件中新增一行hello,world
#!/usr/bin/perl $filename = "tmp.txt"; #打开文件:清空方式, 打开的同时会清空文件 open $file, ">>", $filename or "cannot open file:$filename\n"; #输出字符串到文件中 print $file "hello,world\n"; #关闭文件句柄 close $file;当文件只需要向一个文件输出内容时,可以直接将标准输出重定向,这样就不用每次在print语句后面添加文件句柄了
#!/usr/bin/perl $filename = "tmp.txt"; #打开文件:清空方式, 打开的同时会清空文件 open STDOUT, ">", $filename or "cannot open file:$filename\n"; #输出字符串到文件中 print "hello,world\n";