• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:条件にあてはまる変数を抽出したい)

変数抽出方法について

このQ&Aのポイント
  • 条件にあてはまる変数を抽出する方法について、Perl初心者の方にご質問があります。具体的な方法やアドバイスを教えていただけると助かります。
  • $a1、$a2、$a3、$a4、$a5、$a6の6種類のデータがあり、その中で「1」が代入されたものの中で、aの後ろの数字が大きい変数を抽出したいと考えています。具体的なコード例や解説などを教えていただけると幸いです。
  • 変数抽出のための効率的な方法を教えてください。Perl初心者の方ですのでできるだけ簡潔な方法やコード例が理解しやすいです。よろしくお願いします。

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

  • ベストアンサー
回答No.5

表示がくずれるので空白2文字を全角空白1文字で書いていることに注意 use strict; use warnings; use feature 'say'; my $a1 = 1; my $a2 = 2; my $a3 = 3; my $a4 = 1; my $a5 = 2; my $a6 = 3; my $top = 'Not Found'; for my $num ( reverse 1 .. 6 ) {   my $var = eval '$a' . $num;   if ( $var == 1 ) {     $top = $num;     last;   } } say $top; # 4

kujitan
質問者

お礼

お礼が遅くなりまして申し訳ありません。 皆さまのアドバイスで大変勉強になりました。_--_1l1_1様の例で無事実現に至りました。 つたない質問に回答くださり大変ありがとうございました。

その他の回答 (4)

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

回答No.3さんの言うとおり、最初から配列としてデータを構成するようにしたほうが良いと思います。 ということでこんなのとか: http://www.ideone.com/qw7nw

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

>$a1、$a2、$a3、$a4、$a5、$a6の6種類のデータ 配列を使わないのはなぜですか?

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

if ($a1 == 1) {$TOP = 1;} if ($a2 == 1) {$TOP = 2;} if ($a3 == 1) {$TOP = 3;} if ($a4 == 1) {$TOP = 4;} if ($a5 == 1) {$TOP = 5;} if ($a6 == 1) {$TOP = 6;}

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

そこの「たとえば」の状況では $TOP の値は 1 となりますが, それでいいのですか? ちなみに, 値が 1 のものがないときにどうすればいいのかも書かれていませんね.

kujitan
質問者

補足

早速ありがとうございます。そしてご指摘助かります。 TOPが「1」では困ります。。すみません、$TOP=5 にしたいです。 それから「1」が全くなかった場合ですが、その場合は別処理で、このプログラムを通らずに進むことになっていて、そちらの方は動いています。 なので「1」が全くない場合はない、と思っていただけると幸いです。

専門家に質問してみよう