• ベストアンサー

perlのexistsについて

変数の値と別のハッシュのキーに一致するものがあれば、ハッシュの値を別のスカラー変数に代入したいのですが、その場合のプログラム例を教えてください!

  • Perl
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

>『変数(1)』の値と別の『ハッシュ(2)』のキーに一致するものがあれば、ハッシュの値を『別のスカラー変数(3)』に代入したい 変数(1) ≡ $a、ハッシュ(2) ≡ %h、別のスカラー変数(3) ≡ $b――として、 $b = $h{ $a } ――で良いんでは。 一致しないときの仕様がdon't careということで。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

なんか日本語が分からん. 「変数の値と別のハッシュのキーに一致するものがあれば」とか「ハッシュの値を別のスカラー変数に代入したい」とか, 言葉だけで書くのではなくもっと具体的に (変数を使って) 「こんなことをしたい」ということを書いてくれませんか?

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

exsitsを使うってわかってるなら、マニュアルとかで使い方を調べましょうよ。 大抵、例文が付いてます。 http://perldoc.perl.org/functions/exists.html http://perldoc.jp/docs/perl/5.14.1/perlfunc.pod プログラムは もし ハッシュに「変数の値」をキー値が存在する ならば  「別のスカラー変数」に代入 という単純な構造です。

関連するQ&A

  • 紙谷氏の「Perl/CGI入門」、ハッシュeach関数の例題について

    ハッシュのeach関数を使って「猫はcat犬はdogお茶tea」と表示させるプログラムの主要部分です。 %list = ("猫"=>"cat" , "犬"=>"dog" , "お茶"=>"tea"); while( ($key,$val) = each( %list ) ){   print "$keyは$val"; } whileの条件部分の意味が分かりません。 ・なんで条件部分なのに代入みたいな式が入るのか? ・$keyと$valというのは普通のスカラー変数とは違うのか? 良く分からないので質問の仕方もおぼつかないですが、どなたか分かりやすく説明して頂けないでしょうか?

    • ベストアンサー
    • Perl
  • %inや$inがわかりません・・

    Perlを勉強し始めて1週間です。 入門書を3冊ほど購入して、サンプル掲示板をもとに 勉強しています。 変数やハッシュなどは入門書である程度概念はつかめました。 しかし、サンプル掲示板のプログラムに何度も出てくる、 if ($in{'mode'} eq ・・・・ の $in の部分が分かりません。(この場合の$inはスカラーでなくハッシュなのは分かりました) スカラーにしてもハッシュにしてもその中身をプログラム中で定義してやらなくてはいけないのですよね? でも、サンプルプログラムのどこにも定義がしていないのです。これは何なのか教えて下さい!

    • ベストアンサー
    • Perl
  • perlのハッシュについて

    perlのハッシュでキーから値を得ることは出来ますが、その逆に値からキーを得るような関数ってありますか?探してもみつかりませんでした。識者の方々教えてください。

    • ベストアンサー
    • Perl
  • perlの内容なのですがこれで合っていますでしょうか?

    print 関数は文字列や数値だけでなく、変数を指定してその値を表示することもできます。 $a=1; 1を$aに代入する。 print $a; 変数$aの値を表示させる。 $a=2; 変数$aに2を代入する。 $b=3; 変数$bに3を代入する。 print "変数\$aに変数\$bを代入\n"; 「変数$aに変数$bを代入」という文字を表示させて改行する。 $a=$b; 変数$bの値を変数$aに代入する。 print "\$a="; 「$a=」を表示させる。 print $a; 変数$aの値を表示させる。 print ",\$b="; 「,$b=」を表示させる。 print $b; 変数$bの値を表示させる。 print "\n"; 改行を表示させる。 実行結果は↓↓↓↓↓↓↓ 変数$aに変数$bを代入 $a=3,$b=3 変数の書き方 文は ; で区切るが、1行に並べることも可能。 $a=2; $b=3; ↓ $a=2; $b=3; 複数の変数に、同時に値を代入することも可能。 $a=2; $b=2; ↓ $a=$b=2;

    • ベストアンサー
    • Perl
  • Perlのハッシュ変数のソートについて

    ハッシュ変数の並べ替えをやりたいです。ただ、値の長さでソートをしたいのです。 my %tan_syouhin = ( '佐賀' => 'あいうえお', '滋賀' => 'かき', '無我' => 'さしすせそそそ', '千賀' => 'うりるら', '日我' => 'ぜるだんぽ' ); というハッシュ変数があって「値の長さ」でソートするにはどうしたら良いでしょうか?

    • ベストアンサー
    • Perl
  • ハッシュ変数の怪

    お世話になります。 ハッシュ変数の扱い方について教えて下さい。 <最終的にヤリタイコト> ブログのRSSを読み込み、そのブログ自体のタイトル(1つ)を表示するプログラムを作成したい。 その為に、以下の様なプログラムを作成しています。 ------------------------------------ # 頻繁にRSSを読みに行くのを避けるため、 一時的に$blogfileにRSSファイルを保存しています。 $blogfile="./save/blog.rss"; use XML::RSS; use LWP::Simple; # 保存しているRSSデータを解析 $rss = new XML::RSS; $rss->parsefile($blogfile); # サイト情報を取得 $bigtitle = $rss->{channel}; # そして、これにつづけて、 print $bigtitle->{title}; とすると、ブログ名がキチンと印刷されます。 しかし、この場ではブログ名を表示させたくはなく、一旦、スカラー変数に、このブログ名を代入しておき、後になってから、スカラー変数に代入されたブログ名をprint文で表示させたいのです。 この場合、例えば、 print $bigtitle->{title}; の代わりに $blogtitle=$bigtitle->{title}; とやっても、$blogtitleにブログ名は代入されません。 また、$blogtitleをprint文で表示させてみると、 HASH(0x8ddb5d4) と、いつかどこかで見たような表示になってしまいます。 ●ブログ名をスカラー変数に代入する方法をご教授、よろしくお願い致します。(または、上記の方法以外で、とてもカンタンにブログのRSS情報を元に、そのブログ自体のタイトルのみをスカラー変数に代入するperlプログラムがありましたら、教えて下さい) よろしくお願い致します。

    • ベストアンサー
    • Perl
  • Perlインクリメントデクリメント

    あっていますでしょうか? インクリメント演算子とデクリメント演算子 インクリメント(加算)演算子は変数の数値を一つ増やす。 デクリメント(減算)演算子は変数の数値を一つ減らす。 ++ インクリメント演算子 変数の値を1増やす $a++ ++$a $aの値を1増やす -- デクリメント演算子 変数の値を1減らす $a-- --$a $aの値を1減らす $a=1; 変数$aに1を代入する print "はじめは$aでした。\n"; $aの代わりに1が入り はじめは1でした。と表示する。 $a++; $aに1を足す。 print "1増えて$aになりました。\n"; $aの代わりに2が入り、1増えて2になりました。 と表示する。 $a--; $aから1減らす。 print "1減って$aに戻りました。\n"; $aの代わりに1を入れて 1減って1に戻りました。 と表示する ↓ 実行結果 ↓ はじめは1でした。 1増えて2になりました。 1減って1に戻りました。 $a++ と ++$a の違い インクリメント演算子、デクリメント演算子には2通りの書き方があります。 ++$a(前置)と$a++(後置) --$a(前置)と$a--(後置) 前置の場合は変数の参照より先に演算が行われます。 後置の場合は変数の参照より後に演算が行われます。 $x=$a=1; 変数$xと$aに1を代入する。 $x=++$a; $aに1を足した後に$xに代入する。$xの値は2になる。 $x=$a=1; 変数$xと$aに1を代入する。 $x=$a++; 変数$aの値を$xに代入した後に$aに1を足す。$xの値は1。 文字もインクリメント出来ます。 $x="A"; "A"を$xに代入する。 $x=++$x; Aから一つ増やしてBにして$xに代入する。 $x="aaa"; "aaa"を$xに代入する。 "aaa"を一つ増やして"aab"を$xに代入する。 ただし、文字のデクリメントはできません。

    • ベストアンサー
    • Perl
  • Perlでハッシュや配列で重複するキーについて

    ハッシュで重複するキーが値となるので、このハッシュはabdの3つのキーしか存在しないということでしょうか? %a = ('a'=>1, 'b'=>2, 'a'=>3, 'd'=>4); また、配列の場合はabadと4つ数になるということでしょうか? @a = ('a','b','a','d'); この場合配列で、重複する値を抽出するアルゴリズムが知りたいです。

    • ベストアンサー
    • Perl
  • perlのインクリメントの意味

    インクリメントって言うのは値を1つくわえるという意味ですよね?  本を読んでいてなんだか今までやってきたインクリメントの説明と結びつかない内容が出てきました。  「つまり「MAIE 5.01」などの文字列で、「MSIE 5」までの部分にマッチしたりするわけです。 その場合には、$ua_freq{"MAIE $1"}の$1が変数展開されて、「MSIE 5」や「MSIE 4」などになりますので、コレをハッシュ%ua_freqのキーとする要素の値をインクリメントします。 」  ここにインクリメントと出ていますが、1をくわえると言う意味になるのでしょうか?なんだか、1を加えるというのが結びつかない感じがします。  この場合のインクリメントとはどういう意味で書いているのでしょうか?  よろしくお願いします。ちょっと素人ですので、わかりやすいように説明をしていただけると嬉しいです。  

    • ベストアンサー
    • Perl
  • perl スカラー変数の値をくっつける ストリング

    スカラー変数$valueの値が、 タイトル,名前,メールアドレス,コメント というストリングだったとします。 そのストリングの先頭に、 スカラー変数$cntの値(例えば数値の1)を挿入して、以下のようにしたいと思います。 1,タイトル,名前,メールアドレス,コメント この$valueと$cntをあわせたストリングを $allという変数に格納する場合、 $all=$cnt + "," + $value と書くのでいいのでしょうか? ちょっとActionScriptとごっちゃになっていて、 perlにおけるくっつけ方がわからなくなってしまっています。 お助けください。

    • ベストアンサー
    • CGI

専門家に質問してみよう