私の入力ファイルには露出のパーセンテージがあり、最高の値だけを読み込みます。入力ファイルを読み込んで新しいハッシュを作成する
私が使用中 "はrefs" 中にエラーが無名ハッシュの要素
と
の
奇数はARRAYのリファレンスとして文字列を使用することはできません取得保ちます
私は数字を強制的に試してみましたo整数で読み込まれますが、フラットになります。何かアドバイス?キーと最高値を持つハッシュを作成したいと思います。
while (<$DATA_FILE>) { chomp; my @line_values = split(/,/, $_); my $state_id = $line_values[0]; # skip header row next if ($state_id eq $HEADER_VALUE); for (@line_values) { tr/%%//d }; # assign data used as hash keys to variables my $var1 = int($line_values[1]); my $var2 = int($line_values[2]); if ($var1 > $var2) { %report_data = ({ $state_id } => { \@$var1 }) } else { %report_data = ({ $state_id } => { \@$var2 }) } } # end while print \%report_data; # close file close($DATA_FILE) || printf(STDERR "Failed to close $file_path\n"); }
のようになります。入力データと予想される出力を追加するために質問を編集できますか? –
サンプルコードでインデントを修正しようとしました。歓迎ですが、将来は自分でやってください。コードの構造を理解するためには、インデントをクリアすることは重要なツールです。コードを読んで理解できるようにするためには、できるだけ簡単に行うことが丁寧です。あなたの '#end while 'コメントは、あなたの' for'ループの終わりを実際にマークしているので、間違っているようです。それを確認したいかもしれません。 –
そして、私はあなたのコードが元のバージョンで正しいことを確認したので、私は主に私の修正を元に戻しました。 1行のforループを書くつもりなら、postfixバージョン 'tr/%% // d for @ line_values'を使うほうがはっきりしているかもしれません。しかし、あなたは 'tr /.../.../'という誤解をしているかもしれません。なぜなら、2番目の '%'は何も役に立たないからです。 –