読者です 読者をやめる 読者になる 読者になる

稲沢市よりお届けしてます。

Perlをはじめとしたプログラミング周りのあれこれについて。Perl界のモブキャラとして暗躍します(謎)。

Perlハッシュのリファレンスを使いこなせるようになりますように。

慣れてくると欲が出てくるのは人間の常のようで、
1行ずつ処理していたものを、複数行まとめて処理したくなってしまった。

どう考えても、リファレンスを使わなきゃできそうにない。

ということで、ハッシュリファレンスと向き合ってみた。


まず、読み込むinput2.txt ファイルを準備。
まー、複数行まとめて処理したいナニガシだ。



秋葉原,1,1,1,1,1,1,1,1,1,1
恵比寿,2,2,2,2,2,2,2,2,2,2
新横浜,3,3,3,3,3,3,3,3,3,3


そして、「Perlって便利だなぁ」と思わせてくれると本に書いてあったハッシュリファレンスのお出まし。



# !/usr/bin/perl
#
# ハッシュのリファレンスが思ったとおりに制御できるか実験

use strict;
use warnings;

# 入力リストを開く
open my $input,"< ./input2.txt";

# 入力データを格納する配列
my @input_datas;

# ハッシュ%inputsのキーに入れるやつらを格納した配列
my @attrs = qw(
site_assortment
site_category
site_name
site_url
site_description
site_keywords
site_admin
site_admin_mail
site_admin_account
site_admin_pass );

while(<$input>){
chomp;
my %inputs;

# input2.txtのデータをカンマで区切って、ハッシュ%inputsのバリューとして格納
@inputs{@attrs} = split/,/;

# ハッシュ%inputsのリファレンスを配列@input_datasに格納
push @input_datas, \%inputs;
}

# 狙ったとおりに格納されているかハッシュリファレンスをデリファレンス・出力して確認
print $input_datas[0] -> {site_assortment} ;
print $input_datas[1] -> {site_assortment} ;
print $input_datas[2] -> {site_assortment} ;


実行結果は以下の通り


はい、いい感じ〜。