- ベストアンサー
変数抽出方法について
- 条件にあてはまる変数を抽出する方法について、Perl初心者の方にご質問があります。具体的な方法やアドバイスを教えていただけると助かります。
- $a1、$a2、$a3、$a4、$a5、$a6の6種類のデータがあり、その中で「1」が代入されたものの中で、aの後ろの数字が大きい変数を抽出したいと考えています。具体的なコード例や解説などを教えていただけると幸いです。
- 変数抽出のための効率的な方法を教えてください。Perl初心者の方ですのでできるだけ簡潔な方法やコード例が理解しやすいです。よろしくお願いします。
- みんなの回答 (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
その他の回答 (4)
- osamuy
- ベストアンサー率42% (1231/2878)
回答No.3さんの言うとおり、最初から配列としてデータを構成するようにしたほうが良いと思います。 ということでこんなのとか: http://www.ideone.com/qw7nw
- sakusaker7
- ベストアンサー率62% (800/1280)
>$a1、$a2、$a3、$a4、$a5、$a6の6種類のデータ 配列を使わないのはなぜですか?
- jjon-com
- ベストアンサー率61% (1599/2592)
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)
そこの「たとえば」の状況では $TOP の値は 1 となりますが, それでいいのですか? ちなみに, 値が 1 のものがないときにどうすればいいのかも書かれていませんね.
補足
早速ありがとうございます。そしてご指摘助かります。 TOPが「1」では困ります。。すみません、$TOP=5 にしたいです。 それから「1」が全くなかった場合ですが、その場合は別処理で、このプログラムを通らずに進むことになっていて、そちらの方は動いています。 なので「1」が全くない場合はない、と思っていただけると幸いです。
お礼
お礼が遅くなりまして申し訳ありません。 皆さまのアドバイスで大変勉強になりました。_--_1l1_1様の例で無事実現に至りました。 つたない質問に回答くださり大変ありがとうございました。