私はPerlプロセスに非常に慣れていません。私は学習曲線と Perl をとても楽しんでいますが、信じられないほどフラストレーションを感じており、1 つのタスクに何時間も費やしてきましたが、ほとんどまたはまったく結果が得られませんでした。
#!/usr/bin/perl
use strict;
print "Average value of retroviruses for the length of each genome and each of the genes:\n"; #create a title for the script
my $infile = "Lab1_table.txt"; # This is the file path.
open INFILE, $infile or die "Can't open $infile: $!"; # Provides an error message if the file can'tbe found.
# set my initial values.
my $tally = 0;
my @header = ();
my @averages = ();
# create my first loop to run through the file by line.
while (my $line = <INFILE>){
chomp $line;
print "$line\n";
# add one to the loop and essentially remove the header line of value.
# the first line is what was preventing me from caclulating averages as Perl can't calculate words.
my @row = split /\t/, $line; # split the file by tab characters.
$tally++; #adds one to the tally.
if ( $tally == 1 ) { #if the tally = 1 the row is determined as a the header.
@header = @row;
}
# if the tally is anything else besides 1 then it will read those rows.
else {
for( my $i = 1; $i < scalar @row; $i++ ) {
$averages[$i] += $row[$i];
}
foreach my $element (@row){
}
foreach my $i (0..4){
$averages[$i] = $averages[$i] + $row[1..4];
}
}
}
print "Average values of genome, gag, pol and env:\n";
for( my $i = 1; $i < scalar @averages; $i++ ) { # this line is used to determine the averages of the columns and print the values
print $averages[$i]/($tally-1), "\n";
}
だから、私が望んでいたものを思いつく結果を得ました(私が望んでいた正確な形式ではありませんが、現時点で得られるように見えるほど近いです)、それらは列を平均化します.
問題は現在、アウトファイルへの書き込みです。前のコードからテーブルと結果を出力ファイルに表示しようとしています。適切なファイル名が得られますが、結果がありません。
foreach my $i (1){
my $outfile= "Average_values".".txt";
open OUTFILE, ">$outfile" or die "$outfile: $!";
print "Average values of genome, gag, pol and env:\n";
}
close OUTFILE;
close INFILE;
これには簡単な方法と難しい方法があるように感じますが、私は非常に難しい方法を採用しました。どんな助けでも大歓迎です。