Perl 構造体
これれは春に経験したお話です。
昔、一つのkeyに対して複数のvalueを付与したくて調べてたところ、先輩に「構造体を使えば」と言われて調べたのがきっかけです。
簡単な紹介として、ハッシュのハッシュです。
例として
#!/usr/env/bin perl
use strict;
use warnings;
my $tree;
$tree->{ID_1}->{Namae} = "Yukichi";
$tree->{ID_1}->{Myouji} = "Fukuzawa";
$tree->{ID_2}->{Namae} = "Shigenobu";
$tree->{ID_2}->{Myouji} = "Okuma";
foreach my $ID ( keys %{$tree} ) {
print $tree->{$ID}->{Namae}."\t".$tree->{$ID}->{Myouji}."\n";
}
これを実行しますと
Yukichi Fukuzawa
Shigenobu Okuma
Data::Dumperというモジュールを用いて構造体の中身を表示しますと、
$VAR1 = {
'ID_1' => {
'Myouji' => 'Fukuzawa',
'Namae' => 'Yukichi'
},
'ID_2' => {
'Myouji' => 'Okuma',
'Namae' => 'Shigenobu'
}
};
***Data::Dumperの使用法***
#!/usr/env/bin perl
use strict;
use warnings;
use Data::Dumper;
my $gb; ## 構造体の宣言
(スクリプト)
print Dumper $gb;
このように一つのkeyに複数のvalueを決める事も出来ますし、また多段にする事が出来ます
構造体のsortでは宇宙船演算子を用いる方法をボクは使ってます
foreach my $name (sort { $hash{$a}<=> $hash{$b} } keys %hash){
print "$name,$hash{$name}\n";
}
またDumperで出力する時にkeyのsortも可能です。
use warnings; の下にでも
local $Data::Dumper::Sortkeys = 1;
と入れる事でDumperがsortされます。
発現量データ比較解析をしているときに、
遺伝子ごとの発現量データと一緒にfunctionとかを一緒にまとめられて、
あとから一気にアクセスできる事で非常に重宝してます。
ですがこれぼこぼこ大量にデータ突っ込んでるとメモリーを大量に食うのでご注意ください。