- ベストアンサー
ハッシュのハッシュを実現したい。
ハッシュのハッシュを行いたいですがうまくいきません。 ◆正しい例 %ultraman = ( TARO => { cpu => "Celeron(266MHz)", memory=> "32MB", hdd => "4.3GB", }, JACK => { cpu => "Pentium2(333Mhz*2)", memory=> "128MB", hdd => "9GB*4", }, ); $name = "JACK"; $item = "cpu"; print "\$ultraman{$name}{$item}=[$ultraman{$name}{$item}]"; exit(0); __END__ ◆このように使えたら便利(要はハッシュの代入でハッシュのハッシュを実現したい) %a=(); %b = ("cpu"=>"aaaa", "memory"=>"bbbb"); $a{'JACK'} = %b; #---> このように代入したい $name = "JACK"; $item = "cpu"; print "\$a{$name}{$item}=[$a{$name}{$item}]"; exit(0); __END__
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
その他の回答 (2)
- zebedeer
- ベストアンサー率66% (80/121)
- natsuki_tk
- ベストアンサー率35% (99/279)
関連するQ&A
- ハッシュリファレンスの未定義
サブルーチン/ハッシュリ/ファレンスで悩んでいます。 my (@r); $r[1]{"A"} = "1-A"; # 代入 &s(\@r); print $r[1]{"A"},"\n"; # 参照 print $r[2]{"B"},"\n"; # 参照 サブルーチン側でできない。 # sub s() { my ($c)=@_; @$c[1]->{"A"} = "1111-AAAA"; # もちろん代入できる @$c[2]->{"B"} = "2-B"; # 代入 これができない(ハッシュリファレンスの未定義エラー) } サブルーチン側で新規ハッシュのところに代入ができないのですが どのようにすればいいのでしょうか。
- ベストアンサー
- Perl
- 二次元配列のハッシュ版の記述方法?
二次元配列のハッシュ版を実現させたいのですが、 以下の記述で正しいでしょうか? 構文に疎いので教えてください。 #!/usr/bin/perl %HASH_TEST = ( 'あ'=>{'A'=>'1', 'B'=>'2', 'C'=>'3'}, 'い'=>{'A'=>'4', 'B'=>'5', 'C'=>'6'}, ); print $HASH_TEST{'い'}{'B'}; #=> 5が表示されます。 exit; __END__
- ベストアンサー
- Perl
- 「Perl」ハッシュの使い方について
Perlのハッシュで気軽に多次元配列のようなことをしたいのですができますか? (下記のコードで一応動きましたが、本当にこういった機能があるのか自信がもてません。) もし、可能である場合、 $fruits{'apple'}{'甘い'} = "リンゴ"; $fruits{'melon'}{'甘い'} = "メロン"; 以外の代入方法があれば教えてください。 また、 print values %$fruits; が表示されません。 表示させる方法はありますか? 以上、ご存知の方、居られましたらぜひ教えてください。 宜しくお願い致します。 -test.cgi----------------------------------------- print "Content-Type: text/plain\n\n"; $fruits{'apple'}{'甘い'} = "リンゴ"; $fruits{'melon'}{'甘い'} = "メロン"; print '結果:'.$fruits{'apple'}{'甘い'}; print "\n"; print '結果:'.$fruits{'melon'}{'甘い'}; print "\n"; print keys %fruits; print values %$fruits;# <<表示されない exit; -----------------------------------------
- ベストアンサー
- CGI
- ハッシュを無名変数へ代入して任意の値を取り出したい
%allarray内の'あああ'を表示させたいのですが、 foreach構文で回して if($name eq "$allarray{$key}"){ $TopName=$allarray{$key}; } とその都度してから$TopNameで表示させるのがだるいので下記のように無名変数へハッシュを代入して取り出せないかと試行錯誤しているのですが、解決に至るアドバイスなど頂けませんでしょうか $name='aaa'; %allarray = ( 'aaa' => 'あああ', 'kakaka' => 'かかか', 'sasasa' => 'さささ', ); $mumei=\%allarray; $TopName=$mumei{$$allarray}{$name}; print "$TopName"; で >あああ と表示させたいのです お忙しいかとは存じますがよろしくお願いします。
- ベストアンサー
- Perl
- 無名配列からハッシュを作りたいのですが・・・
$VAR1 = [ 'No', 'a', 'i', 'u', 'e', 'o', ]; #VAR1と同じ数の<>区切りの下記のようなデータを読み込み配列に代入 --List----------------------- 1<>あ<>い<>う<>え<>お<> ------------------------- foreach(0..$#List){ @Array=split(/<>/,$List[$_]); } 最終的なイメージは print "$a{No}"; >1 print "$a{a}"; >a となるよう、上記VAR1の無名配列の値をキーに、読み込んだ<>区切りのデータを関連付けて表示させるようにしたいのです。 foreach my$var(@$VAR1){ ...ここをどうすれば配列の値をハッシュのキーとして作成出来るのか頭を悩ませてます。 } 先輩方のお知恵をお借りできませんでしょうか。 宜しくお願いします。
- ベストアンサー
- Perl
- 動的なハッシュの配列を作成したい
#お世話になります。最終的には、下記のように配列の順番にハッシュを作成したいのですが、ご教授願えませんでしょうか #!/usr/bin/perl #想定される配列 @array=(0,2,4,6,8,1,3,5,7,9); #下記が最終的に動的に作成したいハッシュの形です。 %List = ( '0' => [ (@array0_n) ], '2' => [ (@array2_n) ], '4' => [ (@array4_n) ], '6' => [ (@array6_n) ], '8' => [ (@array8_n) ], '1' => [ (@array1_n) ], '3' => [ (@array3_n) ], '5' => [ (@array5_n) ], '7' => [ (@array7_n) ], '9' => [ (@array9_n) ], ); $a='array'; $n='_n'; foreach (@array){ #試行錯誤中... print "\@{${a}[$_]{$n}}=@{${a}[$_]{$n}}"; } __END__; お忙しいかとは存じますが、よろしくお願いいたします。
- ベストアンサー
- Perl
- Win98からWinXPに移行するとき・・
初めまして。Win98からWinXPに移行しょうと思って るんですけど、その条件はわかるんですけど。 どうやって調べ方かわかりません。教えてください。 ちょっと質問の説明がどう書いてわからないので ↓の方で説明します。 CPU・・・・・・300MHZ以上 メモリー・・・・最低128MB出来れば256MB以上 ハードディスク・1.5GB以上 CPU300MHZ以上って、どこに載ってるんでしょうか? メモリーはどこに載ってるんでしょうか? ハードディスクは容量はどこに載ってるんでしょうか? すいません、すごく初心者で。お願いします。
- ベストアンサー
- Windows 95・98
- (Perl)ReadParseによるハッシュへの格納について
PerlのReadPerseについて質問させてください。 以下少々長いですが、過程を書きます。 <form>タグにより、入力フォームのページをHTMLで作成したとします(form.html)。 その際、<form method="post" action="form.cgi"> と入力しておいて、別途form.cgiを作成するとします。 form.htmlには、<form>タグ内のname属性で、それぞれ'weight' 'height' 'age'という三種類のデータを入力してもらって、取得するようにしています。 そして<input type="submit" value="登録">による、 登録ボタンを押すことで、 form.cgiに処理をさせるようにしています。 form.cgiの中身ですが、まず、最初の三行を書きます。 #!/usr/local/bin/perl require 'cgi-lib.pl'; &ReadParse(*form); となるのですが、わからないのが、 三行目の &ReadParse(*form); です。 サブルーチンReadParseを引数*formで、 cgi-lib.plから呼び出しているということはわかるのですが、いきなり*formという形で、ハッシュを登場させているあたりがわかりません。(この際、ハッシュ名の前の%を*に変えなければならないことは、一応知っております。理由はわかりませんが。) そこで質問なのですが、 いきなり、ハッシュであるformを登場させていいものなのでしょうか?? 以下、form.cgiの内容です。 #!/usr/local/bin/perl require 'cgi-lib.pl'; &ReadParse(*form); $name=$form{'weight'}; $sex=$form{'height'}; $megane=$form{'age'}; print "Content-type: text/html\n\n"; print "<html>\n"; print "<body>\n"; print "体重:${weight}<br>\n"; print "身長:${height}<br>\n"; print "年齢:${age}<br>\n"; print "</body>"; print "</html>"; _END_
- ベストアンサー
- CGI
- メモリーの増設について
メモリーを追加したいと思っています NECのバーサプロ PC-VY12FHBUW OS ウィンXPホーム CPU ペンティアムM1.2Mhz メモリー512Mb (最大2GB) スロットは2個でうち1個に512Mbがあり空きは1個 (1) 512Mbを追加して 512+512=1GB (2) 1GBを追加して 512+1GB=1.5GB (3) 1GBを2枚にして 1GB+1GB=2GB (1)か(2)を考えていますがどれがいちばんよいでしょうか
- 締切済み
- ノートPC