-3

iv。次の出力をタブ ("\t") で区切られた列を持つ新しいファイルに書き込みます: DATE、MONTH、MAX TEMP、MIN TEMP、MAX HUMID、MIN HUMID

#a declare vars
@riteline=();
my $headers;
my $riteAline;
print 'iv. Write the following output to a new file with columns separated by tabs ("\t"):';
print "\n DATE, MONTH, MAX TEMP, MIN TEMP, MAX HUMID, MIN HUMID";
$headers= ("DATE,MONTH,MAX TEMP,MIN TEMP,MAX HUMID,MIN HUMID");
$headers=~ tr/,/\t/;

#first you can turn the arrays into string
 open (my $fh,'>', 'DATAEXPORT.txt') | die "Could not open file :( fix bugs";
 $i=0;
 $ii=0;
 #the loop to match data by index and seperate with tab
 while (<FILE>) {
 chomp;
 if($i=0){
 $fh=$headers;
 print "$fh\n";
 $i=1;
 }else{
 @riteline=(@DAY[$ii],"\t",@MONTH[$ii],"\t",@MAX_TEMPERATURE[$ii],"\t",@MIN_TEMPERATURE[$ii],"\t",@MAX_HUMIDITY[$ii],"\t",@MIN_HUMIDITY[$ii]);
 $fh=join('\t',@riteline);
 print "$fh\n";
 $ii++
 }
 };
 close (FILE);
 print "HW 2 complete";

 My error msg just comes up :(

EDIT1: 数人の親切な提案によって次の変更を行いましたが、出力がありません....理由がわかりません。根本的に間違ったことをしているのですか? 配列は存在します

# iv. Write the following output to a new file with columns separated by tabs ("\t"):
# DATE, MONTH, MAX TEMP, MIN TEMP, MAX HUMID, MIN HUMID

# a delacre
@riteline = ();
my $headers;
print 'iv. Write the following output to a new file with columns separated by tabs ("\t"):';
print "\n DATE, MONTH, MAX TEMP, MIN TEMP, MAX HUMID, MIN HUMID";
$headers = ('DATE,MONTH,MAX TEMP,MIN TEMP,MAX HUMID,MIN HUMID');
$headers =~ tr/,/\t/;

# first you can turn the arrays into string
open(my $fh, '>', 'DATAEXPORT.txt') || die "Could not open file :( fix bugs";
$i  = 0;
$ii = 0;

# the loop to match data by index and seperate with tab
while (<FILE>) {
  chomp;
  if ($i == 0) {
    print $fh $headers, "\n";
    $i = 1;
  }
  else {
    @riteline = (
      $DAY[$ii],             "\t", $MONTH[$ii],           "\t",
      $MAX_TEMPERATURE[$ii], "\t", $MIN_TEMPERATURE[$ii], "\t",
      $MAX_HUMIDITY[$ii],    "\t", $MIN_HUMIDITY[$ii]
    );
    print $fh join("\t", @riteline), "\n";
    print $fh @riteline, "\n";
    $ii++;
  }
}
close(FILE);
print "HW 2 complete";
4

3 に答える 3

3

私のエラーメッセージが表示されます:(

それはあなたが言うからでしょう:

open (my $fh,'>', 'DATAEXPORT.txt') | die "Could not open file :( fix bugs";

言う:

open (my $fh,'>', 'DATAEXPORT.txt') || die "Could not open file :( fix bugs";

また

open (my $fh,'>', 'DATAEXPORT.txt') or die "Could not open file :( fix bugs";

もちろん、他の問題はここでM42 によって指摘されています。

于 2013-09-26T14:18:04.087 に答える
1

推測では、ファイルハンドルで開いたものをすべて読み取ってFILE、さまざまな配列などにデータを入力しています。次に@DAY、配列内のデータを出力するためにもう一度読み取ろ@MONTHうとしていますが、すでにファイルの終わりにあるため、ループは決してありません実行します。while

お申し込みの他にも

use strict;
use warnings;

コードの先頭に移動し、必要に応じてすべての変数を宣言する場合myは、代わりにこれをお勧めします

my @headers = ('DATE', 'MONTH', 'MAX TEMP', 'MIN TEMP', 'MAX HUMID', 'MIN HUMID');

open my $fh, '>', 'DATAEXPORT.txt' or die "Could not open file: $!";

my @columns = \(@DAY, @MONTH, @MAX_TEMPERATURE, @MIN_TEMPERATURE, @MAX_HUMIDITY, @MIN_HUMIDITY);

print join("\t", @headers), "\n";

for my $i (0 .. $#DAY) {
  my @line = map $_->[$i], @columns;
  print $fh join("\t", @line), "\n";
}
close $fh;

print "HW 2 complete";
于 2013-09-26T17:54:44.567 に答える