简体   繁体   English

Perl,从两个文件读取并写入第三个文件

[英]Perl, read from two files and write to a third

I am having trouble getting my program to work. 我无法使我的程序正常工作。 Basically, I read in from two files, then write the data into one. 基本上,我从两个文件读入,然后将数据写入一个。 Can anyone point out what the problem is? 谁能指出问题所在? I keep getting errors about instantiation on the print OUT statements where I am trying to write to the file. 我一直在尝试写入文件的打印输出语句上收到有关实例化的错误。 Here is my code: 这是我的代码:

print "Please input file name \n";
$infile=<DATA>;
$infile2=<DATA>;

open IN, "$infile";
open JUNK, "$infile2";
open OUT, '>' ,'convertedback.txt';

$line = <IN>;
$line2 = <JUNK>;

#pull first line from sample (name 1)
print OUT "$line";
$line =<IN>;
#pull sequence line from FASTQ
print OUT "$line";
#pull line from quality file *2
print OUT "$line2";
$line2 =<JUNK>;
print OUT "$line2";

#Repeat until EOF
while($line =<IN>) {#for lines 5 to end

#Build Line 1
print "line 1 inf (name) is\n";
print $line2;
print OUT "$line2";


#Build Line 2
print "line 2 inf (seq) is\n";
print $line;
print OUT "$line";

#Build Line 3
$line2 =<JUNK>;
print "line 3 inf (quality) is\n";
print $line2;
print OUT "$line2";

#Build Line 4
$line2 =<JUNK>;
print "line 3 inf (quality) is\n";
print $line2;
print OUT "$line2";

}#while $line=<IN>
close (IN);
close (OUT);

print "Done!\n";

__DATA__
outfilenew.txt
sample.qualities

use strict and use warnings in the beginning of the script. 在脚本的开头使用严格并使用警告

use three argument open , like 使用三个参数open ,就像

open(my $fh, '<', "input.txt") or die $!;

use while loop to read lines from files like, 使用while循环从文件中读取行,例如

while(my $line = <>){
   #do something
}

script looks like, 脚本看起来像

use strict;
use warnings;
print "Please input file name \n";
my $infile=<DATA>;
my $infile2=<DATA>;

open(my $in,'<', "$infile") or die $!;
open(my $junk,'<',"$infile2") or die $!;
open(my $out, '>' ,'convertedback.txt') or die $!;

my $line = <$in>;
my $line2 = <$junk>;

#pull first line from sample (name 1)
print $out "$line";
$line =<$in>;
#pull sequence line from FASTQ
print $out "$line";
#pull line from quality file *2
print $out "$line2";
$line2 =<$junk>;
print $out "$line2";

#Repeat until EOF
while($line =<$in>) {#for lines 5 to end

#Build Line 1
print "line 1 inf (name) is\n";
print $line2;
print $out "$line2";


#Build Line 2
print "line 2 inf (seq) is\n";
print $line;
print $out "$line";

#Build Line 3
$line2 =<$junk>;
print "line 3 inf (quality) is\n";
print $line2;
print $out "$line2";

#Build Line 4
$line2 =<$junk>;
print "line 3 inf (quality) is\n";
print $line2;
print $out "$line2";

}#while $line=<IN>
close ($in);
close ($out);

print "Done!\n";

__DATA__
outfilenew.txt
sample.qualities

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM