程序员的知识教程库

网站首页 > 教程分享 正文

Perl基础命令——文件句柄基础2(perl常用命令)

henian88 2024-10-27 10:07:29 教程分享 6 ℃ 0 评论

上次我们介绍了如何使用open来创建文件句柄并关联文件, 今天我们继续介绍如果对文件来进行操作。


我们先准备一个测试文件test.txt

1,2,3

a,b,c

333fdad


my $file_in  = 'test.txt';
my $file_out = 'test2.txt';
open my $fh_in, '<', $file_in 
    or die "Failed to open file:$file_in\n";
open my $fh_out, '>', $file_out 
    or die "Failed to open file:$file_out\n";

如果需要读取一行数据, 我们可以这样:

my $str = <$fh_in>;

那如何读取所有数据呢?

my @str_all = <$fh_in>;

这样所有的数据都在我们的数组里面了。

同样是尖括号, 为什么上面只读取了一行, 下面则一次性读取了全部呢?

这就是我们前面说的环境, 在标量环境中, 尖括号一次读取一行, 并返回一个标量值, 而在列表环境中, 尖括号会读取所有的内容, 并返回数组。


我们现在可以读取文件的所有内容了, 但是, 当我们的文件很大时(10G, 100G, 1000T...),如果我们一次性读取所有数据,当数据量很大时, 效率会很低, 当数据量大于内存时, 必然会使程序崩溃。


所以我们使用如下方式, 逐行读取数据:

while(<$fh_in>){
  print;
  print $fh_out $_;
}

上面的代码, 我们逐行读取文件中的数据, 打印出来, 并写入新文件中.





Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表