0

配列のハッシュを作成しようとしています。txt ファイルからデータを取得し、これを配列のハッシュに変換しています。

txtファイルのデータは以下の通り

group1 : usr1 usr4 usr6
group2 : usr2 usr1 usr5
group3 : usr1 usr2 usr3

すぐ ......

この配列のハッシュを次のように変換しています

%hash = (group1 => [usr1 usr4 usr6], group2 => [usr2 usr1 usr5]);

次のコードを試しています

%hash = ();
open (FH, "2.txt") or die "file not found";
while (<FH>) {
@array = split (":", $_);
$array[1] =~ s/^\s*//;
$array[1] =~ s/\s*$//;
@arrayRef = split (" ", $array[1]);
$hash{$array[0]} = [ @arrayRef ];
#print @array;
#print "\n";
}
close FH;


print $hash{group1}[0];
print @{ $hash{group2}};

出力が得られません。コードに何か問題があります。それをよりよく理解するのを手伝ってください

4

2 に答える 2

1
use strict;
use warnings;

my %hash;
open (my $FH, "<", "2.txt") or die $!;
while (<$FH>) {
  my ($key, @array) = split /[:\s]+/, $_;
  $hash{$key} = \@array;
}
close $FH;

use Data::Dumper;
print Dumper \%hash;
于 2013-08-12T10:05:35.437 に答える