- ベストアンサー
perlでhashをスカラー変数に渡す方法とは?
- Perlでhashをスカラー変数に渡す方法について説明します。
- 例えば、hashをスカラー変数「$test」に渡し、変換してeachで回す方法があります。
- 実務では、hashをスカラー変数で受け取ることもありますので、注意が必要です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
関数内ではハッシュや配列のまま使いますが参照はグローバル変数の様に使います 引数で参照を渡し各関数内で要素を参照に代入すれば簡潔になります 簡易データベースなどを使う場合は必須です,ホームにデータベースを作れば以下で簡単に操作出来ます use Fcntl; use NDBM_File; my $refe = {}; N_dbm($refe); # print"$refe->{'DBM'}->{'hoge'}\n"; sub N_dbm{ my $refe = shift; tie my %hash,'NDBM_File',"$ENV{'HOME'}/DBM",O_RDONLY,0 or die " Not read DBM $!\n"; $refe->{'DBM'} = \%hash; }
その他の回答 (1)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
>実際の業務とかでhashをスカラー変数で受け取るようなことってありえるのでしょうか? ありえるかより、むしろめちゃくちゃ多いです。 例えばC言語 int hoge( int a ) ; int 幅のaという入力値を持ち、返り値がint Perlのように、Webで使う言語だとしても、 PHP function hoge( $a ) ; 帰り値は任意の1つ など、帰り値が何らかの「1個」あることは多いんです。 なので、ObjectかArrayにすることは多いですよ。 Perlは、もう私はやらないですが、 my $test = { a=>'test_a', b=>'test_b', c=>'test_c' }; これは、無名代入表記での、 { a:'test_a', b:'test_b', c:'test_c' } と、同等のコードと思われます。 ObjectにArrayを追加。 { a:'test_a', b:'test_b', c:'test_c', d:[ 'waa1', 'waa2', 'waa3', ] } なんてこともあるかもしれません。 $obj.test_d[2]=当然waa2のように。 一つの関数で、返り値を一つの値で 複数のメンバー(またはメソッド)にしたい時、 このやり方は、かなり多いです。 Arrayでいいじゃないか?ではないんですよ。 Arrayの場合、1つでも、位置がずれたら強烈な バグを引き起こすので、Objectの「名前」そのものを 目的に見立てて返却する手法は、多くのネット言語では 見ますよ。 なので、覚えて損はない概念と思ってよいかと