開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Strawberry Perl (WindowsのPerlの言語処理系)
- Visual Studio Code (Text Editor)
- Perl 5.30 (プログラミング言語)
続・初めての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 コメント:
コメントを投稿