2011-04-11 38 views
0

我無法讓我的程序正常工作。基本上,我從兩個文件讀入數據,然後將數據寫入一個文件。任何人都可以指出問題是什麼?我正在嘗試寫入文件的打印OUT語句中收到關於實例化的錯誤。這裏是我的代碼:Perl,從兩個文件讀取並寫入第三個

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 

回答

6

使用strict,並在腳本的開頭使用warnings

使用以上三個參數open,像

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

使用while循環來讀取文件一樣的線條,

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

劇本的樣子,

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 
+4

+1爲「使用**三ar gument ** open「。 – 2011-04-11 05:59:35

相關問題