【覚書】Perlで配列のメンバとしてHASH変数を追加する、他
忘れないうちにメモ書き。
しばらく書いてないのですっかり忘れてしまってましたが……Perlって構造体使えないのですね(ナニヲイマサラ)。
代わりに配列とHASHを駆使すれば似たようなことは出来るようですが。
配列にHASHを追加するには、
push( @array, { %hash } ) ;
でよい……のかな?。
{ }を付けわすれるとうまくいかない
以下、サンプル(上記の他、HASHへの値セットパターンいくつか&サブルーチンへ渡す引数をリファレンス渡しにする例。処理内容には特に意味無し)。
#! /usr/bin/perl -w
my @list = () ;
%tmp1 = ( 'id', '11111', 'name', 'R.B' ) ;
push( @list, { %tmp1 } ) ;
%tmp2 = (
id => '22222'
, name => 'D.E'
) ;
push( @list, { %tmp2 } ) ;
my %tmp3 ;
$tmp3{'id'} = '33333' ;
$tmp3{'name'} = 'W.K' ;
push( @list, { %tmp3 } ) ;
my $data = 'id,12345,name,A.K:id,67890,name,S.T:id,10293,name,G.H' ;
my @unit = split( ':', $data ) ;
for my $elm ( @unit ) {
my %tmp = split( ',', $elm ) ;
push( @list, { %tmp } ) ;
}
print "_/_/_/ TEST 1 _/_/_/\n\n" ;
print "\$list {\n" ;
for ( my $ci=0; $ci <= $#list; $ci++ ) {
print " [$ci] {\n" ;
for my $key ( keys %{ $list[$ci] } ) {
print " $key => '$list[$ci]{$key}'\n";
}
print " }\n" ;
}
print "}\n\n" ;
print "_/_/_/ TEST 2 _/_/_/\n\n" ;
print "\$list {\n" ;
for my $ci (0..$#list) {
&prtUnit( \@list, $ci ) ;
}
print "}\n\n" ;
# _/_/_/ subroutine _/_/_/
sub prtUnit
{
my $refList = shift ;
my $ci = shift ;
print " [$ci] {\n" ;
for my $key ( keys %{ $refList->[$ci] } ) {
print " $key => '$refList->[$ci]{$key}'\n";
# print " $key => '$$refList[$ci]{$key}'\n"; # same as above
}
print " }\n" ;
} # end of prtUnit2
__END__
my @list = () ;
%tmp1 = ( 'id', '11111', 'name', 'R.B' ) ;
push( @list, { %tmp1 } ) ;
%tmp2 = (
id => '22222'
, name => 'D.E'
) ;
push( @list, { %tmp2 } ) ;
my %tmp3 ;
$tmp3{'id'} = '33333' ;
$tmp3{'name'} = 'W.K' ;
push( @list, { %tmp3 } ) ;
my $data = 'id,12345,name,A.K:id,67890,name,S.T:id,10293,name,G.H' ;
my @unit = split( ':', $data ) ;
for my $elm ( @unit ) {
my %tmp = split( ',', $elm ) ;
push( @list, { %tmp } ) ;
}
print "_/_/_/ TEST 1 _/_/_/\n\n" ;
print "\$list {\n" ;
for ( my $ci=0; $ci <= $#list; $ci++ ) {
print " [$ci] {\n" ;
for my $key ( keys %{ $list[$ci] } ) {
print " $key => '$list[$ci]{$key}'\n";
}
print " }\n" ;
}
print "}\n\n" ;
print "_/_/_/ TEST 2 _/_/_/\n\n" ;
print "\$list {\n" ;
for my $ci (0..$#list) {
&prtUnit( \@list, $ci ) ;
}
print "}\n\n" ;
# _/_/_/ subroutine _/_/_/
sub prtUnit
{
my $refList = shift ;
my $ci = shift ;
print " [$ci] {\n" ;
for my $key ( keys %{ $refList->[$ci] } ) {
print " $key => '$refList->[$ci]{$key}'\n";
# print " $key => '$$refList[$ci]{$key}'\n"; # same as above
}
print " }\n" ;
} # end of prtUnit2
__END__
« 【ココログ】ページ内目次:記事の編集画面へのリンクを修正 | トップページ | 【Excel】属性指定検索/属性をタグに変換 »
「パソコン・インターネット」カテゴリの記事
- Twitter 原寸びゅー:PC版ブラウザ用・Twitterの画像閲覧と保存がはかどる拡張機能の紹介(2016.02.12)
- スマートフォンをPC上の音楽を再生するためのリモコンとして使いたい(2016.01.10)
- BIGLOBE光ネクスト(大阪)の通信速度問題 - プロバイダ選びは難しい……(2015.08.13)
- BOOK☆WALKER さんに関して最近経験した不安と不満(2015.08.10)
- 『#鳥獣戯画制作キット』が楽しい(2015.07.01)
「覚書」カテゴリの記事
- 鍛高譚 ~ カレイにまつわる物語(2018.05.25)
- ココログをTwitterカードに対応させてみる(2016.11.23)
- 神使の兎 ~宇治神社にて~(2016.07.10)
- Twitter 原寸びゅー:PC版ブラウザ用・Twitterの画像閲覧と保存がはかどる拡張機能の紹介(2016.02.12)
- スマートフォンをPC上の音楽を再生するためのリモコンとして使いたい(2016.01.10)
« 【ココログ】ページ内目次:記事の編集画面へのリンクを修正 | トップページ | 【Excel】属性指定検索/属性をタグに変換 »
コメント