Perl備忘録1 リスト/ハッシュとか

静的なハッシュの代入

 my %hash = (
  NO => 1,
  RECORD_NAME => "TEST",
  ENC_RECORD_NAME => "TEST_ENC"
 );

ハッシュをリスト配列に追加(「{}」で囲まれているときはハッシュへのリファレンス?)

 my $item = {
  NO => 1,
  RECORD_NAME => "TEST",
  ENC_RECORD_NAME => "TEST_ENC"
 };
 my @item_list;
 push(@item_list, $item);

リストのループ

 foreach (@list) {
  print $_ ,"\n";
 }

ハッシュのループ

 while(my($key, $value) = each %hash) {
  print $key,"=>",$value,"\n";
 }

ハッシュのキー取り出しループ

foreach my $key (sort keys %hash) {
  print $hash{$key},"\n";
}

参照渡しのハッシュを、ハッシュ変数にキャスト(リスト変数も同様)

# ハッシュを参照渡し
 my %p_hash;
 method(\%p_hash);

# メソッド内でハッシュに展開
 sub method($) {
  my ($prm_hash) = @_;
  while(my($key, $val) = each %$prm_hash)
  {
   print $key,"=>",$value,"\n";
  }
 }

参照渡しのハッシュを、ハッシュ変数にキャストその2

 # ハッシュを参照渡し
 my %p_hash;
 method(\%p_hash);

# メソッド内でハッシュに展開
 sub method($) {
  my ($prm_hash) = @_;
   
  # 使用するときは、以下の形式で使う
  # 「$$」は参照元の実体?
  $$prm_hash{"KEY"} = "VALUE";
 }

ハッシュのハッシュ

my %hash_hash = 
 ( 'KEY1' => { 'KEY1A'=>'VALUE_1A', 'KEY1B'=>'VALUE_1B'},
   'KEY2' => { 'KEY2A'=>'VALUE_2A', 'KEY2B'=>'VALUE_2B'} );

# 以下は「VALUE_1B」
print $hash_hash{"KEY1"}{"KEY1B"},"\n";

ハッシュの使い方

 my %hash= (); # 初期化を忘れないこと!

 # 要素の追加(括弧を間違えないこと!)
 $hash{"aaa"} = 1;
 $hash{"bbb"} = 2;

 # ※再度初期化し直す
 %hash = ("ccc", 3);