Snippets

sironekotoro Perl入学式 2018 第4回 練習問題 output_array_and_hash.pl

Created by sironekotoro

File output_array_and_hash.pl Added

  • Ignore whitespace
  • Hide word diff
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+# Perl入学式 2018 第4回 練習問題
+# https://github.com/perl-entrance-org/workshop-2018/blob/master/4th/slide.md
+# 練習問題(output_array_and_hash.pl)
+
+# 配列とハッシュをそれぞれ1つずつ定義してから,
+# 第1引数に配列のリファレンス,
+# 第2引数にハッシュのリファレンスを受け取り,
+# その中身を出力する(for文などを利用して...),
+# output_array_and_hashというサブルーチンを
+# 書いてみよう.
+
+# @array:a〜gをの文字を格納した配列
+my @array = qw(a b c d e f g);
+
+# %hash :keyにTV局の略称、valueに地デジの
+# リモコンキーID(東京)を設定したハッシュ
+my %hash = (
+    nhk => 1,    # NHK総合
+    etv => 2,    # Eテレ
+    ntv => 4,    # 日本テレビ
+    ex  => 5,    # テレビ朝日
+    tbs => 6,    # TBSテレビ
+    tx  => 7,    # テレビ東京
+    ftv => 8     # フジテレビ
+);
+
+# 先頭に\をつけて、リファレンス化した配列とハッシュを
+# 引数にして配列を呼び出す
+# リファレンス化しないと配列やハッシュといったデータ構造を
+# 維持してサブルーチンの中に取り込めない
+output_array_and_hash( \@array, \%hash );
+
+# サブルーチンの定義
+sub output_array_and_hash {
+
+    # 引数を取得する
+    my ( $array_ref, $hash_ref ) = @_;
+
+    # 配列リファレンスをデリファレンスして配列にする
+    my @array = @{$array_ref};
+
+    # for文で配列の中身を出力する
+    for my $char (@array) {
+        print $char , "\n";
+    }
+
+    # 区切り線
+    print '-' x 10, "\n";
+
+
+    # ハッシュリファレンスからkeyを取り出す
+    # keys関数の引数にはデリファレンスした
+    # ハッシュを渡す(%{$hash_ref})
+    for my $key ( keys %{$hash_ref} ) {
+
+        # ハッシュリファレンスからアロー演算子で
+        # keyに対応するvalueを表示する
+        print $key , ":", $hash_ref->{$key}, "\n";
+    }
+
+    print '-' x 10, "\n";
+
+    # # ハッシュ2
+    # # ハッシュリファレンスをデリファレンして
+    # ハッシュに戻してからwhile文を利用した方法
+    #
+    # my %hash = %{$hash_ref};
+    # while ( my ( $key, $value ) = each %hash ) {
+    #     print "$key : $value\n";
+    # }
+
+}
+
HTTPS SSH

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