2020年6月24日水曜日

開発環境

続・初めてのPerl 改訂第2版 (Randal L. Schwartz(著)brian d foy(著)Tom Phoenix(著)伊藤 直也(監修)長尾 高弘(翻訳)、オライリージャパン)の5章(リファレンスとスコープ)、5.9(練習問題)1の解答を求めてみる。

コード

#!/usr/bin/env perl
use strict;
use warnings;
use v5.30;

# ハッシュに修正
my %passenger_1 = (
 name => 'Ginger',
 age => 22,
 occupation => 'Movie Star',
 real_age => 35,
 hat => undef,
);
my %passenger_2 = (
 name => 'Mary Ann',
 age => 19,
 hat => 'bonnet',
 favoriate_food => 'corn',
);
my @passengers1 = (\%passenger_1, \%passenger_2);
foreach (@passengers1) {
 say "@$_{'name', 'age'}";
}
# ハッシュリファレンスに修正
my $ref_to_passenger_1 = {
 name => 'Ginger',
 age => 22,
 occupation => 'Movie Star',
 real_age => 35,
 hat => undef,
};
my $ref_to_passenger_2 = {
 name => 'Mary Ann',
 age => 19,
 hat => 'bonnet',
 favoriate_food => 'corn',
};
my @passengers2 = ($ref_to_passenger_1, $ref_to_passenger_2);
say '';
# 無名ハッシュ
my @passengers3 = (
 {
  name => 'Ginger',
  age => 22,
  occupation => 'Movie Star',
  real_age => 35,
  hat => undef,
 },
 {
  name => 'Mary Ann',
  age => 19,
  hat => 'bonnet',
  favoriate_food => 'corn',
 },
);
# 配列リファレンス
my @passengers = (
 \@passengers1,
 \@passengers2,
 \@passengers3
);
# デリファレンス
foreach (@passengers) {
 foreach (@$_) {
  say "@$_{'name', 'age'}";
 }
 say '';
}

入出力結果(Zsh、PowerShell、Terminal)

% ./sample1.pl
Ginger 22
Mary Ann 19

Ginger 22
Mary Ann 19

Ginger 22
Mary Ann 19

Ginger 22
Mary Ann 19

%

0 コメント:

コメントを投稿