Aide-memoire

Bio-infomaticsで困った事の備忘録的なサムシング

自分が困った事をまとめた備忘録的なサムシング

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とかを一緒にまとめられて、
あとから一気にアクセスできる事で非常に重宝してます。

ですがこれぼこぼこ大量にデータ突っ込んでるとメモリーを大量に食うのでご注意ください。