Snippets

sironekotoro Perl入学式 2018 第3回 練習問題 hash_ref.pl

Created by sironekotoro
#!/usr/bin/env perl
use strict;
use warnings;

# Perl入学式 2018 第3回 練習問題
# https://github.com/perl-entrance-org/workshop-2018/blob/master/3rd/slide.md
# 練習問題(hash_ref.pl)

# animal
#  ├─ dog
#  │    ├─ name: 'Taro'
#  │    └─ color: 'brown'
#  └─ cat
#        ├─ name: 'Tama'
#        └─ color: 'white'

# 次の処理をする hash_ref.pl を作りましょう。
# 1.上記のデータ構造を表す%animalを作ってください。
# 2.その中からwhiteを取り出してください。
# 3.余裕があれば、他の要素も取り出してみましょう。

# 1.上記のデータ構造を表す%animalを作ってください。
# に従い、ハッシュを作る
my %animal;

# ハッシュを作り、ハッシュリファレンスをスカラー変数に格納する方法
my %dog_hash = ( name => 'Taro', color => 'brown' );
my $dog_ref = \%dog_hash;

# 無名ハッシュをスカラー変数に格納する方法
my $cat_ref = { name => 'Tama', color => 'white' };

# ハッシュのvalueに、上記で作ったハッシュリファレンスを格納
%animal = ( dog => $dog_ref, cat => $cat_ref );

# アロー記法を利用
print $animal{cat}->{color}, "\n";    # while

# ハッシュのkey cat に対するvalueに格納されている
# ハッシュリファレンスをデリファレンスし、key名
# colorでアクセスする
print ${ $animal{cat} }{color}, "\n";    # white


# おまけ
# for文でハッシュの要素を連続で表示する
print "\nomake\n";
for my $key (keys %animal){
    print "key is $key name is $animal{$key}->{name}" ,"\n";
    print "key is $key color is $animal{$key}->{color}" ,"\n";
}

Comments (0)