2006年5月23日(火)

« 【ココログ】ページ内目次:記事の編集画面へのリンクを修正 | トップページ | 【Excel】属性指定検索/属性をタグに変換 »

【覚書】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__

この記事をニフティクリップβに追加 この記事をはてなブックマークに追加 2006/05/23(火) 04:47 | | 記事の編集(管理者用)

風柳へひとこと(web拍手) 

パソコン・インターネット」カテゴリの記事

覚書」カテゴリの記事

トラックバック

この記事のトラックバックURL:

記事との関連性が薄いものやSPAM等、管理人が不適切と見なしたトラックバックについては予告無く削除する場合が有ります。悪しからずご了承下さい。

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/161784/10198788

この記事へのトラックバック一覧です: 【覚書】Perlで配列のメンバとしてHASH変数を追加する、他:

コメント

コメントを書く