Snippets

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

Created by sironekotoro

File hash_ref.pl Added

  • Ignore whitespace
  • Hide word diff
+#!/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";
+}
+
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.