Snippets

sironekotoro Perl入学式 2018 第3回 復習問題 score.pl 2-4

Created by sironekotoro

File score_2_4.pl Added

  • Ignore whitespace
  • Hide word diff
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Data::Dumper;
+
+# Perl入学式 2018 第3回 復習問題 score.pl
+# https://github.com/perl-entrance-org/workshop-2018/blob/master/3rd/practice.md
+
+# 2-4. 国ごとのPerlハイスコアリストを作る
+# $highscoreというハッシュリファレンスを作成し、国(country)
+# ごとの perl のスコアが 60 以上の人の名前を格納しましょう。
+
+my $alice = {
+    name    => 'Alice',
+    country => 'England',
+    perl    => 60,
+    python  => 80,
+    ruby    => 80,
+    php     => 50,
+    binary  => 30,
+};
+my $bob = {
+    name    => 'Bob',
+    country => 'America',
+    perl    => 40,
+    python  => 10,
+    ruby    => 20,
+    php     => 30,
+    binary  => 50,
+};
+my $carol = {
+    name    => 'Carol',
+    country => 'England',
+    perl    => 100,
+    python  => 70,
+    ruby    => 80,
+    php     => 50,
+    binary  => 50,
+};
+my $dave = {
+    name    => 'Dave',
+    country => 'Canada',
+    perl    => 60,
+    python  => 11,
+    ruby    => 1,
+    php     => 100,
+    binary  => 100,
+};
+my $ellen = {
+    name    => 'Ellen',
+    country => 'America',
+    perl    => 1,
+    python  => 15,
+    ruby    => 0.5,
+    php     => 60,
+    binary  => 0.01,
+};
+
+my $highscore;
+
+# それぞれの人物を表したハッシュリファレンスを集めた配列を作成
+my @people = ( $alice, $bob, $carol, $dave, $ellen );
+
+for my $man (@people) {
+
+    # 人物のハッシュリファレンスのkeyがperlの値が
+    # 60以上だった場合
+    if ( $man->{perl} >= 60 ) {
+
+        # 国名を取得
+        my $country = $man->{country};
+
+# 国名をkeyに、名前をvalueに作成される配列リファレンスにpushする
+# valueに配列リファレンスがなければ、pushすることで作成される
+        push @{ $highscore->{$country} }, $man->{name};
+    }
+
+}
+
+# 確認用Data::Dumper
+print Dumper $highscore;
HTTPS SSH

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