老师, 请教下,用perl 语言,把一个文件里面的一部分内容写到另一个文件里的方法。谢谢!
源文内容格式如下:中文12345678中文11111111中文字符1中文23456781中文11111111中文字符1.......中文12345678中文2222222...
源文内容格式如下:
中文12345678 中文11111111 中文字符1
中文23456781 中文11111111 中文字符1
.......
中文12345678 中文22222222 中文11111111 中文字符2
中文23456781 中文22222222 中文11111111 中文字符2
目标文件内容如下(替换后的)
中文11111111 中文字符1
中文22222222 中文字符2 展开
中文12345678 中文11111111 中文字符1
中文23456781 中文11111111 中文字符1
.......
中文12345678 中文22222222 中文11111111 中文字符2
中文23456781 中文22222222 中文11111111 中文字符2
目标文件内容如下(替换后的)
中文11111111 中文字符1
中文22222222 中文字符2 展开
1个回答
展开全部
根据我的理解,做了一个脚本,在我的机器上试过了:
use 5.016;
use warnings;
use utf8;
use autodie;
my %target;
my $source_file = 'original.txt';
my $target_file = 'target.txt';
my $source_file_fh; # your source file handle
my $target_file_fh; # your target file handle
my $key; # key item in target file
my $content; # last content item in target file
sub get_last_item {
my $str = shift;
$str =~ /.*[ ]+(.*)/;
return $1;
}
sub get_key {
my $str = shift;
my $content = shift;
$str =~ /.*[ ]+(.*)[ ]+$content/;
return $1;
}
open($source_file_fh, "<", $source_file);
open($target_file_fh , ">", $target_file);
while (<$source_file_fh>) {
$content = get_last_item($_);
$key = get_key($_, $content);
$target{$key} = $content if ($key);
}
for (sort keys %target) {
say $target_file_fh "$_ $target{$_}";
}
close $target_file_fh;
close $source_file_fh;
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询