2011-11-29 24 views
-2

これは(Working with Spreadsheet::ParseExcel)とは異なる名前の同じスレッドです。彼らのうちのいくつかはタイトルを示唆しており、質問は意味をなさない。簡単にできないのは残念です。ハッシュperlへの配列

、私の質問は:この

TY45745a A,B 
TY45745a C,D 
TY45745a E,F 
TY5475a G,H 
TY5475a I,J 
TY5475a K,L 

ような配列は、このようなハッシュになされるべきです。

TY45745a =>(A、B、C、D、E、F) TY5475a =>(G、H、I、J、K、L)

そして、この次の部分は、になりファイルの名前を変更し、ファイル名の末尾に[AE]がある場合は、TY45745a [1..6]に、[GL] TY5475a [1..6]に名前を変更する必要があります。

%hash = @array

が、どのようにグループ化しなければならないことは

TY45745a => A,B 
TY45745a => C,D 
TY45745a => E,F 
TY5475a => G,H 
TY5475a => I,J 
TY5475a => K,L 

になるのでしょうか?あなたの時間をありがとうと提案

EDIT

:問題の更新配列で

TY45745a 
A,B 
TY45745a 
C,D 
TY45745a 
E,F 
TY5475a 
G,H 
TY5475a 
I,J 
TY5475a 
K,L 
+2

は、あなたがより読みやすい形で元の配列を印刷しようとすることはできますか? – nicomen

+0

あなたの最新の編集で何を話していますか?回答のコメントは、あなたがコメントしている回答の下にあります。あなたのコードに表示されるようにあなたの配列を印刷するだけなら、あなたを助けるほうがずっと簡単です。それが '(' TY45745a '、' A、B '、...)か(TY45745a A、B'、...)であるかどうかは不明です。どちらの方法でも '%hash = @ array'はあなたが記述する出力を生成しません。 – flesk

答えて

2

:申し訳ありませんが、富栄ウェンbecos動作しないでしょう。このようなものだ部分のforループoutpurを通過この作品:

my $hash = {}; 

for my $part (@arr) { 
    my ($key, $values) = split/ /, $part; 
    push @{$hash->{$key}}, $_ for split/,/, $values; 
} 

私はあなたが[AF]置き換えると約何を意味するかわからないんだけど[GL]しかし、これはあなたがどんな交換せずに、ご希望の出力として説明してきたものを生成するので。

+0

私が提出しようとしていたもの –

+0

@JoelBerger:私はこれを賛辞として受け取ります。 ;} $ {_}}、@ $ _}マップ{[分割/ [、] /]} @ arr; ' – flesk

0
#/usr/bin/perl 
use List::MoreUtils; 
use Data::Dumper; 

my $h; 
my @a = ("TY45745a", "A,B", 
     "TY45745a", "C,D", 
     "TY45745a", "E,F", 
     "TY5475a", "G,H", 
     "TY5475a", "I,J", 
     "TY5475a", "K,L"); 

my $it = List::MoreUtils::natatime 2, @a; 

while (my ($k,$v) = $it->()) { 
    print "$k => $v"; 
    push @{$h->{$k}}, split /,/, $v; 
}; 

print Dumper($h) 

ができます:

TY45745a => A,B 
TY45745a => C,D 
TY45745a => E,F 
TY5475a => G,H 
TY5475a => I,J 
TY5475a => K,L 

$VAR1 = { 
     'TY5475a' => [ 
        'G', 
        'H', 
        'I', 
        'J', 
        'K', 
        'L' 
        ], 
     'TY45745a' => [ 
         'A', 
         'B', 
         'C', 
         'D', 
         'E', 
         'F' 
        ] 
    }; 
関連する問題