小编d5e*_*5e5的帖子

读取整个文件然后在内部编辑时打印?

大多数就地编辑的例子都是单行,它们遍历一个或多个文件,一次读取和打印一行.

我找不到任何将整个文件读入数组,根据需要修改数组,然后在使用^ I开关进行就地编辑时打印数组的示例.当我尝试从钻石操作员读取整个文件,编辑内容并打印整个内容时,我发现打印转到STDOUT而不是ARGVOUT并且ARGVOUT已关闭.我可以打开相同的文件输出然后打印到它,但我不确定我理解为什么这是必要的.这是一个例子:

#!/usr/bin/perl
use strict;
use warnings;
use 5.010;

my $filename = 'test.txt';

push @ARGV, $filename;

$^I = ".bk";

my @file = <>; #Read all records into array
chomp @file;
push @file, qw(add a few more lines);

print join "\n", @file; #This prints to STDOUT, and ARGVOUT is closed. Why?
Run Code Online (Sandbox Code Playgroud)

运行上述操作会按预期方式备份test.txt文件,但将编辑后的test.txt保留为空,将编辑后的内容打印到STDOUT.

perl inplace-editing

4
推荐指数
1
解决办法
1132
查看次数

标签 统计

inplace-editing ×1

perl ×1