-
会場について
- 飲食・喫煙・トイレetc
-
写真撮影について
-
写真撮影NGな方は、お手数ですが申し出てください
-
写真はPerl普及団体の JPA ( Japan Perl Association )への活動報告に利用します
-
- 講師・サポーター紹介
-
せっかく今日集まったので、テーブルで自己紹介をしましょう。
-
話題は自由ですが、以下がオススメです。
-
名前(ハンドルネーム)
-
なぜPerlを勉強してみようと思ったか
-
なぜPerl入学式に参加してみようと思ったか
-
前回参加してからの学習の進捗
-
- 前回の復習
- リファレンス、その前に
- 配列リファレンス
- 配列リファレンスの応用
- 配列リファレンスを使う
- ハッシュリファレンス
- ハッシュリファレンスの応用
- ハッシュリファレンスを使う
- HTML入学式
-
ハッシュ
-
正規表現
my $scalar = 'Hello world';
print $scalar . "\n"; # Hello world
my $num = 1;
$num = $num + 1;
print $num . "\n"; # 2
my @number_array = ( 1, 2, 3, 4, 5 );
print "@number_array\n"; # 1 2 3 4 5
my @strings_array = ( 'Jan', 'Feb', 'Mar', 'Apr', 'May' );
print "@strings_array\n"; # Jan Feb Mar Apr May
my %hash = (
Perl => 'Larry Wall',
PHP => 'Rasmus Lerdorf',
C => 'Dennis MacAlistair Ritchie',
swift => 'Chris Lattner'
);
for my $lang ( sort keys %hash ) {
print $lang . ' was made by ' . $hash{$lang} . "\n";
}
これからの説明では、変数の中に入れてきた「文字列」や「数値」を データ と呼びます。
また、データを 「 親 - 子 」関係や「含む - 含まれる」など、データ同士を関連づけたものを データ構造 と呼びます。
といっても、難しい話ではありません。
我々はすでにデータ構造の中で、その概念をつかって便利に暮らしています。
2頭の犬がいて、それぞれに名前が付いている。また、それぞれの犬種についての情報も含まれている。
- 犬
- 名前 : タロ { 種別 : 柴犬 , 色 : 茶色}
- 名前 : チョビ { 種別 : ハスキー , 色 : 白黒 }
馬の名前と、両親、母の父親(祖父)の情報
- 名前 : トウカイテイオー
- 父 : シンボリルドルフ
- 母 : トウカイナチュラル
- 母の父 : ナイスダンサー
このように、実際に我々が利用しているデータ構造ですが、これまで学習してきたスカラー変数、配列、ハッシュ だけでは再現しきれない状況があります。
例えば、日本の都道府県を配列で再現してみます。
日本 = ( 北海道, ... 東京都, 大阪府, ... 福岡県, 沖縄県 );
# Perl入学式を開催している都道府県
my @japan = ( 'Hokkaido',
'Tokyo',
'Osaka',
'Fukuoka',
'Okinawa',
);
東京には23区があります
日本の都道府県を羅列した配列の中に、東京(親) - 23区(子)という関係を維持したデータ構造を作ってみましょう。
# Perl入学式を開催している都道府県
my @japan = ('Hokkaido', 'Tokyo', 'Osaka', 'Fukuoka', 'Okinawa');
# 東京23区の一部
my @tokyo = ('Chiyoda', 'Shinagawa', 'Shinjyuku', 'Taito');
push @japan, @tokyo;
print "@japan\n"; # Hokkaido Tokyo Kyoto Osaka Fukuoka Okinawa Chiyoda Shinagawa Shinjyuku Taito
23区の情報が @japan
の中で展開され、東京(親) - 23区(子) という親子関係がわからなくなってしまいました。
先の例の通り、現時点で学んだ「スカラー変数」「配列」「ハッシュ」だけでは以下のデータ構造を作ることができません。
-
配列の中の配列
-
配列の中のハッシュ
-
ハッシュの中の配列
-
ハッシュの中のハッシュ
このような複雑なデータ構造を表現し、利用するための方法が リファレンス です。
先に説明してきた複雑なデータ構造は リファレンス を利用することで再現が可能です。
リファレンスとは、変数の中のデータそのものではなく、 データを指し示すもの です。
例えば我々もデータを指し示す際に、以下のようにリファレンスを使っています。
-
名前やIDをつかって特定の人物を指し示す。
-
GPS座標をつかって特定の場所を指し示す。
この場合、データを指し示すもの は名前やGPS座標です。
変数の先頭についているシジル( $, @, % )の前にバックスラッシュ (\) を置くことで、 それぞれの変数をリファレンスにすることができます。
my $scalar = 'scalar'; # スカラーを定義
my $scalar_ref = \$scalar; # スカラーのリファレンスを作成
my @array = ( 'foo', 'bar', 'baz' ); # 配列を定義
my $array_ref = \@array; # 配列のリファレンスを作成
my %hash = ( foo => 'bar' ); # ハッシュを定義
my $hash_ref = \%hash; # ハッシュのリファレンスを作成
それぞれのリファレンスを格納しているのが スカラー変数 であることに注目してください。 配列とハッシュをスカラー変数にすることで、配列の要素やハッシュの値にすることが可能になります。
-
Perlの配列やハッシュには、スカラー値しか格納できない。このため、複雑なデータ構造を作ることができない。
-
配列やハッシュを リファレンス にすることで、スカラー値にすることができる。
-
リファレンスを利用することで、以下のような複雑なデータ構造を表現できる。
- 配列の中の配列
- 配列の中のハッシュ
- ハッシュの中の配列
- ハッシュの中のハッシュ
なお、リファレンスを作ることを リファレンス化 、 リファレンスをとる ともいいます。
次項からは、配列リファレンスを例にとって解説していきます。
ここからは配列リファレンスを例に説明していきます。
作成したリファレンスをそのまま print
してみます。
my @array = ( 'foo', 'bar', 'baz' ); # 配列を定義
my $array_ref = \@array; # 配列のリファレンスを作成
print "$array_ref\n"; # ARRAY(0x7fba31013488)
この時、1行に2つの情報が表示されています。
-
リファレンスにする前の変数の種類( SCALAR, ARRAY, HASH など )
-
リファレンスにする前の変数の値が格納されている メモリの番地
メモリは コンピュータの一時的な記憶場所 と考えてください。 (一時的なので実行ごとにメモリの番地が変わります)
メモリの番地は重複することのない、1つの値(スカラー値)です。
リファレンスは「メモリの番地」が格納されているスカラー変数、と解説しました。
配列やハッシュなどは複数の要素を持ちますが、コンピュータ上ではこれを1つのメモリの番地に格納します。
このメモリの番地は重複することはありません。
これらの配列やハッシュをリファレンスにして「1つのメモリの番地」、つまり「1つの値」にすることで、スカラー変数に格納することが可能です。
スカラー変数にした配列やハッシュですが、必要に応じて元の変数に戻す必要があります。
そのために行うのが デリファレンス です。
リファレンスが格納されている変数を { }
(中括弧, curly bracket)で囲み、元の変数のシジルをつけることでデリファレンスすることが可能です。
my @array = ( 'foo', 'bar', 'baz' ); # 配列を定義
my $array_ref = \@array; # 配列のリファレンスを作成
print $array_ref . "\n"; # メモリの番地 ARRAY(0x7ffa86818118)
my @deref_array = @{$array_ref}; # デリファレンスして新しい配列に入れた
print "@deref_array\n"; # foo bar baz
先ほど出てきた @{$array_ref}
について説明します。{ }
の中から見ていきます。
my @deref_array = @{$array_ref}; # デリファレンスして新しい配列に入れた
-
$array_ref
:スカラー変数(中身は配列リファレンス) -
@{$array_ref}
: スカラー変数を{ }
で囲み、元の配列のシジル@
をつけてデリファレンスした。
デリファレンスした @{$array_ref}
は配列と同様に扱うことができるので、新しい配列変数 @deref_array
に代入が可能です。
デリファレンスしたスカラー変数は、元の配列と等価です。
my @array = ( 'foo', 'bar', 'baz' ); # 配列を定義
my $array_ref = \@array; # 配列のリファレンスを作成
print "@array\n"; # foo bar baz
print "@{$array_ref}\n"; # foo bar baz
デリファレンスしたスカラー変数は、配列と同じように添字を使って元の配列の要素にアクセスできます。
my @array = ( 'foo', 'bar', 'baz' ); # 配列を定義
my $array_ref = \@array; # 配列のリファレンスを作成
# @{$array_ref} : 配列リファレンスをデリファレンスしたもの
# ${$array_ref}[0] : 配列リファレンスをデリファレンスして1つの要素を指定
# : 1つの要素を扱うときのシジルは $ になることに注意
print "${$array_ref}[0]\n"; # foo
print "${$array_ref}[1]\n"; # bar
print "${$array_ref}[2]\n"; # baz
以下のコードを実行するとエラーが出ます。エディタにコピペしたうえで修正し、プログラムを完成させてください。
#!/usr/bin/env perl
use strict;
use warnings;
my @array = ( 1 .. 100 ); # 1から100までの数字が格納された配列を用意する
my $array_ref = @array; # 配列リファレンスを作成する
my @deref_array = @{$array_ref}; # 配列リファレンスをデリファレンスする
print "@deref_array\n"; # 1から100までの数字が表示されると正解
以下のコードを実行するとエラーが出ます。エディタにコピペしたうえでif文の条件式を修正し、プログラムを完成させてください。
#!/usr/bin/env perl
use strict;
use warnings;
my @array = ( 'A' .. 'Z' ); # A から Z までの文字が格納された配列を用意する
my $array_ref = \@array; # 配列リファレンスを作成する
if ( $array_ref[10] eq 'K' ) {
print "配列の先頭から10番目の要素はKです"; # この行が実行されると正解
}
すでに複雑なデータ構造を作ることが決まっている場合、 無名配列 を使うことで一手間省くことが可能です。
# これまでの方法
my @array = ( 'foo', 'bar', 'baz' ); # リファレンスの元になる配列
my $array_ref = \@array; # リファレンスにして スカラー変数に格納する
# 無名配列を使う方法
my $anonymous_array = [ 'foo', 'bar', 'baz' ];
無名配列の「無名」は配列としての名を持たない($anonymous_array
はスカラーの名前)と考えてください。
通常の配列作成時は ( )
を利用しますが、無名配列は [ ]
(角括弧, square brackets)を利用して作成します。
簡単な参照の仕方を紹介する前に、従来の方法を復習しておきます。
(参考)配列の0番目の要素を表示する
my @array = ( 'foo', 'bar', 'baz' );
print "$array[0]\n"; # foo
(参考)配列リファレンスの0番目の要素を表示する(デリファレンスして添字)
my $array_ref = [ 'foo', 'bar', 'baz' ]; # 無名配列
print "${$array_ref}[0]\n"; # foo デリファレンスして添字
配列リファレンスの0番目の要素を表示する(アロー記法)
my $array_ref = [ 'foo', 'bar', 'baz' ]; # 無名配列
# アロー記法
print "$array_ref->[0]\n"; # foo
アロー(矢印) ->
を利用した $array_ref->[0]
という記法で配列リファレンスの要素にアクセスすることが可能です。
以下のコードを実行するとエラーが出ます。エディタにコピペしたうえでfor文の{ }ブロック内を修正し、プログラムを完成させてください。
余裕のある人は以下に挑戦してください
- アロー記法を使った方法、使わない方法で書いてみる
- for文の条件式と{ }ブロック内を編集して書いてみる
# お約束の3行は省略してますが、必ず書くこと
my $month_name = [
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
];
for my $num ( 0 .. 11 ) {
print "$month_name"; # 月の省略した英名を表示する
}
以下のデータを配列リファレンスで処理してみましょう。
[animal]
├────┬─ shiba
│ └─ bull
└────┬─ mike
└─ kuro
animal という集合の中に 犬の集合(shiba, bull) と 猫の集合(mike, kuro) が入っている図とみてください。
配列の中の配列 です。
まずはデータ構造を作成します。
配列のリファレンスを使うことで、意図した構造でデータを格納できます。
my @dog = ( 'shiba', 'bull' ); # 配列@dogを作る
my $dog_ref = \@dog; # @dogをリファレンスにする
my $cat_ref = [ 'mike', 'kuro' ]; # 無名配列をつかって猫の配列リファレンスをつくる
my @animal = ( $dog_ref, $cat_ref ); # @animal の要素に入れて完成
無名配列を使って、一度にまとめて書くこともできます。
my @animal = ( [ 'shiba', 'bull' ], [ 'mike', 'kuro' ] ); # 完成
作成したデータ構造から、特定のデータ「bull」を表示します。
[animal]
├──┬─ shiba
│ └─ bull
└──┬─ mike
└─ kuro
-
配列
@animal
のどこに 犬の集合が入っているかを確認する
=>@animal
の 最初の要素に入っている。これは$animal[0]
となる。
=> この$animal[0]
は スカラー値、つまり配列リファレンスである。 -
次に, 配列リファレンスのどこに
bull
が入っているかを確認する。
=>[1]
番目である。 -
bull
が格納されているのは${$animal[0]}[1]
または$animal[0]->[1]
となる。
では実際に表示してみます。
# 無名配列でデータ構造を構築
my @animal = ( [ 'shiba', 'bull' ], [ 'mike', 'kuro' ] );
print "$animal[0]->[1]\n"; # bull
また、添字に挟まれる場合に限り、アロー記法を省略することが可能です。
# 無名配列でデータ構造を構築
my @animal = ( [ 'shiba', 'bull' ], [ 'mike', 'kuro' ] );
print "$animal[0][1]\n"; # bull アローを省略
animal
├──┬─ shiba
│ └─ bull
│
├──┬─ mike
│ └─ kuro
│
└──┬─ eagle
└─ crow
次の処理をする array_ref.pl
を作りましょう。
-
上記のデータ構造を表す
@animal
を作ってください。 -
@animal
の中にあるeagle
を表示してください。 -
余裕があれば, 他の要素も表示してみましょう。
ハッシュのデータ構造も ハッシュリファレンス として扱うことができます。
では, さっそくハッシュをリファレンスにしてみます。
my %hash = (
name => 'Larry',
lang => 'Perl',
);
my $hash_ref = \%hash;
配列リファレンスと同様です。
-
シジル(
%
) の前にバックスラッシュ(\)を置くことでリファレンスを作成できる -
リファレンスは スカラー変数 に格納される
my %hash = ( # ハッシュを定義
name => 'Larry',
lang => 'Perl',
);
my $hash_ref = \%hash; # ハッシュリファレンスを作成
print "$hash_ref\n"; # HASH(0x7f92de017760)
ここも配列リファレンスと同様です。
ハッシュリファレンスとは、ハッシュの要素が格納されているメモリの番地を指し示すものです。
ハッシュリファレンスの中の要素を利用するためには、デリファレンスする必要があります。
my %hash = ( # ハッシュを定義
name => 'Larry',
lang => 'Perl',
);
my $hash_ref = \%hash; # ハッシュリファレンスを作成
my %deref_hash = %{$hash_ref}; # デリファレンス
デリファレンスの方法も、配列リファレンスと同じです。ただし、記号が異なります。
リファレンスが格納されている変数を { } (中括弧, curly bracket)で囲み、元の変数のシジルをつけることでデリファレンスすることが可能です。
デリファレンスしたスカラー変数は、ハッシュと同様に key を使って元のハッシュの要素にアクセスできます。
my %hash = ( # ハッシュを定義
name => 'Larry',
lang => 'Perl',
);
my $hash_ref = \%hash; # ハッシュリファレンスを作成
print ${$hash_ref}{name} . "\n"; # Larry
print ${$hash_ref}{lang} . "\n"; # Perl
先ほど出てきた %{$hash_ref}{name}
について説明します。
print ${$hash_ref}{name} . "\n"; # Larry
-
$hash_ref
:スカラー変数(中身はハッシュリファレンス) -
%{$hash_ref}
:スカラー変数をデリファレンスして、ハッシュと同様に扱えるようにする -
${$hash_ref}{name}
:name
という key に対応する1つの value にアクセスするので、シジルが $ に変わる
以下のコードを実行するとエラーが出ます。エディタにコピペしたうえでプログラムを完成させてください。
# お約束の3行は省略してますが、必ず書くこと
my %hash = ( name => 'Larry', lang => 'Perl' ); # ハッシュを作成
my $hash_ref = \%hash;
print $hash_ref{name} . "\n"; # Larry と表示される
print $hash_ref{lang} . "\n"; # Perl と表示される
以下のように表示されれば正解です。まだアロー記法はつかわないこと!(この次にやります)
Larry
Perl
配列リファレンスの簡単な作り方に無名配列があったように、ハッシュも無名ハッシュからリファレンスを作ることができます。
my $hash_ref = {
name => 'Larry',
lang => 'Perl',
};
print ${$hash_ref}{name}; # Larry
print ${$hash_ref}{lang}; # Perl
無名ハッシュの「無名」はハッシュとしての名を持たない($hash_ref
はスカラーの名前)と考えてください。
通常のハッシュ作成時は ( )
を利用しますが、無名ハッシュは { }
(中括弧, curly brackets)を利用して作成します。
- (参考)ハッシュの key を参照する
my %hash = ( name => 'Larry' );
print "$hash{name}\n"; # Larry
- (参考)ハッシュリファレンスの key を参照する(デリファレンスして添字)
my $hash_ref = { name => 'Larry' }; # 無名ハッシュ
print "${$hash_ref}{name}\n"; # Larry
配列リファレンスの時と同様に、アロー記法を利用します。
my $hash_ref = {
name => 'Larry',
lang => 'Perl',
};
print "$hash_ref->{name}\n"; # Larry
print "$hash_ref->{lang}\n"; # Perl
通常のハッシュのvalueを参照するときは $hash{key} ですが、ハッシュリファレンスの場合には ->
がついて $hash_ref->{key}
となっています。
以下のコードを実行すると意図した出力が行われません。エディタにコピペしたうえでfor文の{ }ブロック内を修正し、プログラムを完成させてください。
Jan is 1
と12ヶ月分表示されれば正解です。余裕のある人は1st month
, 2nd month
などの序数を正しく追加しましょう。
# お約束の3行は省略してますが、必ず書くこと
my @month_name = (
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
);
my $month_hash_ref = {
Jan => 1, Feb => 2, Mar => 3, Apr => 4, May => 5, Jun => 6,
Jul => 7, Aug => 8, Sep => 9, Oct => 10, Nov => 11, Dec => 12,
};
for my $name (@month_name){
print $name . ' is ' . %month_hash_ref{$name} . "th month\n";
}
以下のデータ構造をハッシュリファレンスで処理してみましょう。
animal
└─ dog
├─ name: 'Taro'
└─ color: 'brown'
動物 animal
というハッシュの key として犬 dog
があり、その dog
の value として「名前」と「色」がある。
ハッシュのハッシュ です
まずはデータ構造を作成します。
ハッシュのリファレンスを使うことで、意図した構造でデータを格納できます。
my %dog = ( # ハッシュを作る
name => 'Taro',
color => 'brown',
);
# %dogをもとにハッシュリファレンス$dog_refを作る
my $dog_ref = \%dog;
# dogをkey, $dog_ref を value とする %animal を作る
my %animal = ( dog => $dog_ref, );
無名ハッシュを使って、一度にまとめて書くこともできます。
my %animal = ( dog => { name => 'Taro', color => 'brown' } );
作成したデータ構造から、特定のデータ Taro
を表示してみます。
animal
└ dog
├─ name: 'Taro'
└─ color: 'brown'
-
ハッシュ %animal のどこに
Taro
があるか確認する
=>dog
以下にある -
dog
の value にあるハッシュリファレンスの key の値を確認する
=> name という key だ -
これらの情報から
Taro
が格納されているのは以下となる${$animal{dog}}{name}
$animal{dog}->{name}
では実際に表示してみます。
# 無名ハッシュで一気にデータ構造を構築
my %animal = ( dog => { name => 'Taro', color => 'brown' } );
print ${$animal{dog}}{name} , "\n"; # Taro
print $animal{dog}->{name} , "\n"; # Taro アロー記法
配列リファレンスと同様に、アローが添字に挟まれる場合にはアロー記法の省略が可能です。
my %animal = ( dog => { name => 'Taro', color => 'brown' } );
print $animal{dog}{name} , "\n"; # Taro
animal
├─ dog
│ ├─ name: 'Taro'
│ └─ color: 'brown'
└─ cat
├─ name: 'Tama'
└─ color: 'white'
次の処理をする animal_hash_ref.pl
を作りましょう。
ハッシュのハッシュ です。dog , cat はそれぞれkeyと考えてください。
-
上記のデータ構造を表す
%animal
を作ってください。 -
%animal
の中にあるwhite
を表示してください。 -
余裕があれば, 他の要素も表示してみましょう。
リファレンスのままでは、追加/削除はできません。リファレンスはあくまで、データを指し示すスカラー値だからです。
しかし、デリファレンスすることで、これまでに習った配列操作関数やハッシュ操作関数を利用することができます。
my $array_ref = [ 'foo', 'bar', 'baz' ]; # 無名配列を作成
print "@{$array_ref}" . "\n"; # foo bar baz
push @{$array_ref}, 'piyo'; # デリファレンスして piyo を末尾に追加
print "@{$array_ref}" . "\n"; # foo bar baz piyo
shift @{$array_ref}; # デリファレンスして foo を取り出し
print "@{$array_ref}" . "\n"; # bar baz piyo
my $hash_ref = {
name => 'Larry',
lang => 'Perl',
};
${$hash_ref}{univ} = 'SPU'; # デリファレンスして追加
print $hash_ref->{univ} . "\n"; # SPU (Seattle Pacific University)
my @keys = keys %{$hash_ref}; # デリファレンスしてkeyを取得
print "@keys" . "\n"; # name lang univ (順不同)
delete ${$hash_ref}{univ}; # デリファレンスしてunivを削除
if ( exists ${$hash_ref}{univ} ){# デリファレンスしてunivが存在するか確認
print "univ is exists\n"
}else{
print "univ is not exists\n"
}
データ構造の中身を出力したいとき、ここまではその要素の一部だけを表示きました。
しかし、中身を一度にすべて見たい場合はどうすればいいでしょうか?
このようなときは、Data::Dumper
モジュールを使えばリファレンスの中身を一括表示(ダンプ)できます。
use Data::Dumper; # 最初にモジュールの使用を宣言
my $dog = {
name => 'Taro',
color => 'brown',
};
$dog->{age} = 3;
print Dumper($dog); # Data::Dumper の Dumper 関数を使って print
# 出力結果
# $VAR1 = {
# 'name' => 'Taro',
# 'color' => 'brown',
# 'age' => 3
# };
Data::Dumper
にはリファレンスを引数として渡します。
よって、ハッシュの中身を見たいときには、リファレンスにしたものを渡します。
my %dog = (
name => 'Taro',
color => 'brown',
);
$dog{age} = 3;
print Dumper(\%dog); # リファレンスを渡す
Data::Dumper
は、新たな要素を代入した後に中身を確かめたいときや、データの中身を把握していないときなどに役立ちます。
また、Perlに標準で組み込まれているモジュールなので、宣言さえすれば利用することが可能です。
PerlにはData::Dumper
の他にも有用なモジュールが標準で数多く組み込まれています。
その一部を紹介します。
Encode
- 日本語などの「マルチバイト文字」入出力に必須となるモジュール。絵文字も利用可能。
JSON::PP
- インターネットでの情報のやり取りに利用される「JSON形式」データの作成・解読。(Perl 5.14以降)
List::Util
- リスト(配列)でよく利用される最小, 最大, 合計など、よく利用する関数を提供。
HTTP::Tiny
- 必要最小限の機能を持つWebクライアント。(Perl 5.14以降)
まず, 以下のデータ構造を表す%japan
を作ってください.
japan
├─ tokyo
│ ├─ gotanda
│ └─ shibuya
├─ osaka
│ └─ shinsaibashi
├─ okinawa
│ ├─ naha
│ └─ yomitan
├─ hokkaido
│ ├─ sapporo
│ └─ obihiro
└─ fukuoka
└─ hakata
-
作成したデータから
tokyo
に含まれるgotanda
,shibuya
を表示してください -
作成したデータの
osaka
にumeda
を追加してください -
作成したデータの
okinawa
にpiyo
を追加してください -
作成したデータの
hokkaido
にchitose
を追加し,sapporo
を取り除いてください(今までに習った配列操作関数 push,pop,shift,unshift を利用しましょう。sapporo
の位置に注目) -
作成したデータの
fukuoka
を取り除いてください -
Data::Dumperでデータ構造を表示してください
-
時間の余裕のある人は、Data::Dumper を使わずに
%japan
内のデータを全て表示してみましょう -
さらに時間の余裕がある人は
splice
関数について調べてみましょう
今回の内容を復習できる問題集です.
不明点があれば, 気軽にサポーターに質問してください.
-
是非Perl入学式のslackに参加して, サポーターや参加者の皆さんと交流しましょう.
-
不明点もslackで是非質問してください.
-
最終回の第5回の参加もお待ちしております!
次回はWebアプリを作成しますが、その際に知っておくと良い内容をまとめました。
-
サブルーチン
-
Mojolicious の準備
-
HTTP の基礎
-
Mojolicious 入門
-
簡易 BBS の作成