1

ファイルのリストを読み取り、各値をハッシュに保存するビルドを使用してハッシュテーブルを構築しようとしています。ファイルを作成し、ファイル名、合計、パス、およびハッシュ テーブルへの失敗を含む has テーブルにそれらを配置します。

#!/usr/bin/perl
use strict;

my $dir = "../result";
opendir(DIR, $dir) or die $!;
my %result = ();

while (my $file = readdir(DIR)) {
   # We only want files
   next unless (-f "$dir/$file");

   # do something here and get some value from each file
   $total = $worksheet->get_cell(0,1);
   $pass  = $worksheet->get_cell(1,1);
   $fail  = $worksheet->get_cell(2,1);

   # Print the cell value when not blank
   $total = $total->value();
   $pass = $pass->value();
   $fail = $fail->value();


   %result = (
              "name"  => "$file", 
              "total" => "$total", 
              "pass"  => "$pass",
              "fail"  => "$fail"
   );

}

foreach my $key (keys %result) {
   print "Key: $key, Value: $result{$key}\n";
}

forloopで実行すると、ディレクトリの最後のエントリまたは最後のファイルのみが取得されます.上記のキーと値を持つすべてのファイルを追跡するハッシュを追加して構築するにはどうすればよいですか..よろしくお願いします..

4

2 に答える 2

1

必要なものをハッシュに保存します。

それ以外の:

   %result = (
              "name"  => "$file", 
              "total" => "$total", 
              "pass"  => "$pass",
              "fail"  => "$fail"
   );

毎回ハッシュ全体を置き換えるには、次のようなものを試してください。

$result{$file} = "$total $pass $fail";

その場合、ハッシュのキーはファイル名になり、値は他の値の文字列を連結したものになります。

これらの 3 つの値を保持する配列など、ハッシュの要素をより複雑なものにすることもできます。

于 2013-11-01T17:50:21.033 に答える