我正在尝试将其中一个数据文件或一些字符插入到perl中的现有文件中。
例如,假设我们有'data'文件和'extraData'文件。 如果数据文件包含高度信息,请在高度后一行之后插入extraData文件中的信息。
数据:
red fox
likes to run
Height:
120
speed:
140
额外数据:
Weight:
70
结果:
red fox
likes to run
Height:
120
Weight:
70
speed:
140
目前我已实施以下代码,并且在找到“身高”后立即打印重量信息。我想打印高度及其信息,然后附上重量信息。
假设$ weight具有extraData文件的权重信息:
use File::Copy;
copy( "data", "copy" ) or die "Copy failed: $!";
unlink("data.txt");
open FILE, '<', 'copy';
open OUT, '>', 'data';
while ( my $line = <FILE> ) {
if ( grep {/Height/} $line ) {
print OUT $line;
print OUT "Weight \n";
print OUT $weight;
}
else {
print OUT $line;
}
}
结果:
red fox
likes to run
Height:
Weight:
70
120
speed:
140
任何帮助将不胜感激, 感谢
答案 0 :(得分:0)
perl -plne 'print "Weight:\n\n70\n" if(/speed/);' test.txt
应该这样做
答案 1 :(得分:0)
在这种情况下,我建议使用$INPLACE_EDIT
修改文件,并flip-flop operator确定何时插入新数据:
use strict;
use warnings;
my $file = 'data';
local @ARGV = $file;
local $^I = '.bak';
while (<>) {
print;
print "Weight:\n70\n" if /Height/ .. /\d/ and /\d/;
}
# unlink "$file$^I"; # Optional delete backup