如何在perl中附加文件

时间:2012-10-22 10:33:58

标签: perl

我有一个文件a.txt,我有文件b.txt.I我正在读取这两个文件。

让我们假设a.txt有:

Apple is a fruit.
I like java.
I am an human being.
I am saying hello world.

让我们说b.txt有

I am the planet earth

现在我正在尝试搜索a.txt中的特定字符串,例如:我是人类。如果我找到这一行。我想将b.txt中的内容追加到a.txt.My输出文件应该看一些像这样的事情

Apple is a fruit.
I like java.
I am the planet earth---->appended
I am an human being.
I am saying hello world.

我正在尝试下面,但它没有帮助

open (FILE1 , "a.txt")
my (@fpointer1) = <FILE>; 
close FILE1

open (FILE2 , "b.txt")
my (@fpointer1) = <FILE>; 
close FILE2

#Open the a.txt again, but this time in write mode
open (FILE3 , ">a.txt")
my (@fpointer1) = <FILE>; 
close FILE3

foreach $line (@fpointer1) {

if (line to be searched is found)
--> Paste(Insert) the contents of file "b.txt" read through fpointer2

}

2 个答案:

答案 0 :(得分:1)

这是一个相当快速和肮脏的工作示例:

use warnings;
use 5.010;

open FILE, "a.txt" or die "Couldn't open file: $!"; 
while (<FILE>){
$string_A .= $_;
}

open FILE, "b.txt" or die "Couldn't open file: $!"; 
while (<FILE>){
$string_B .= $_;
}
close FILE;

$searchString = "I am an human being.";


$resultPosition = index($string_A, $searchString);

if($resultPosition!= -1){

$endPosition = length($string_A)+length($string_B)-length($searchString);

$temp_String  =  substr($string_A, 0, $resultPosition).$string_B." ";


$final_String =$temp_String.substr($string_A, $resultPosition, $endPosition) ;
}
else {print "String not found!";}

print $final_String;

可能有更有效的方法。但你可以有个主意。

答案 1 :(得分:0)

这是一个例子

use strict;

open(A, ">>a.txt") or die "a.txt not open";
open(B, "b.txt") or die "b.txt not open";

my @text = <B>;
foreach my $l (@text){
        if ($l =~ /I am the planet earth/sg){
                print A $&;
        }
}
我想,就像这样......