• ベストアンサー

配列の終わりまで while

ファイルの終わりまでループをするなら while($input = <IN>){ ・・・とすればよいかと思うのですが、 配列の終わりまでループをするにはどうしたら よいのでしょうか。 while(@test = ???){

  • naru
  • お礼率76% (155/202)
  • Perl
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • ika3
  • ベストアンサー率64% (29/45)
回答No.1

foreach (@test) { で良いんじゃないでしょうか。

naru
質問者

お礼

ありがとうございます。 まさしくそのとおりでした。 初心者の質問で、失礼しました。

関連するQ&A

  • JavaScript で配列の終わりまでループ

    JavaScript で配列の終わりまでループを回すには どうしたらいいのでしょう? perl であれば foreach (@test) {  処理 } ですよね。。。test.length; で要素数を取得する以外で 方法はないでしょうか。 new Array を使って、2次元配列(のようなもの) を 作って格納してしまったので、test[0][*], test[1][*] それぞれの要素数を調べたいのです。 現状だと test[0][*], test[1][*] 2つの合計値が 返ってしまいます。

  • while (<STDIN>) {・・} の意味。

     while(<STDIN>){    ・・・  } の場合、ファイルの終わりに来ると whileループを抜けます。 しかし、ここで疑問があります。 <STDIN>はファイルの終わりに来ると undef を返しますよね? しかし、結城浩さんによると、 「Perlでは(undef)は真」となっています。 http://d.hatena.ne.jp/hyuki/20060406#undef すると、上記のループは本来終わらないはずでは、 と思ってしまうのですが・・・。 何が間違っているのでしょうか?

    • ベストアンサー
    • CGI
  • 配列の使い方分かりません

    //整数型の配列を10個準備する。 //ループ文を用いてキーボードから値を10個入力する。(for文を用いる) //入力した値を出力する。 //ループ文を用いて入力値の合計と平均値を求める。(while文を用いる) 以上の課題が出されました。 配列の使い方が分からないので上手くできません。 説明付だとうれしいです。よろしくお願いします。

  • 配列とwhileを使った2重ループを使って書きたい

    今JAVAの勉強をしているのですが、「以下のような画面を表示するコードをint型2次元配列とwhileを使った2重ループを使って書いてください。」 ======================================= a[0][0]:1 a[0][1]:2 a[1][0]:3 a[1][1]:4 ======================================= の問題をやっているのですが実行してみると a[0][0]:1 a[1][1]:4 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 at exsercise141.java.Exsercise141Java.main(Exsercise141Java.java:32) Java Result: 1 ビルド成功(合計時間: 0秒) と表示されてしまい、a[0][1]:2とa[1][0]:3が表示されません。 コードは以下のとおりです。 public static void main(String[] args) { // TODO code application logic here int i=0; int j=0;//変数を宣言 int B [] [] = new int [2] [2];//2次元配列を宣言 //======================================== B [0] [0] = 1;// B [0] [1] = 2; //========================================== B [1] [0] = 3; B [1] [1] = 4; //========================================== while(i<=3) { while(j<=3) { System.out.println("a["+i+"]["+j+"]:"+B[i][j]); i++; j++; } } } } どのようにすればa[0][1]:2とa[1][0]:3も表示されますか? ご教授願います。 ちなみにNetBeansを使用しております。 よろしくお願いします。

    • ベストアンサー
    • Java
  • verilogでのwhile文について質問

    verilog初心者です。 while文での処理を記述していたのですが、 下記のように変更するとエラーとなってしまいます。 なんとか出来る方法はないでしょうか? module TEST(in_data, state, clock, reset, out); input [9:0] in_data; input [5:0] state; input clock; input reset; output [5:0] out; reg [5:0] out; always@(posedge clock or negedge reset) begin if(reset == 0) begin out = 0; end else begin out = in_data; while(out > 7)begin out = out >> 1; end end end // always@ (posedge clock or negedge reset) endmodule // TEST 上のように書くと、合成でき、シミュレーションでも期待する値は得ることが出来ました。 以下のようにwhile文を変更するとエラーとなってしまいます。 while(out > state)begin out = out >> 1; end よろしくお願いします。

  • 連想配列の配列の使い方

    C言語でいうところの構造体の配列(要素は"hoge"と"fuga"のみ)を perlで表現する場合、連想配列の配列にするのが一般的でしょうか? 以下の様なソースコードなのですが、perlらしさが失われている気がします。 perlらしく書くとしたらどう書くのが良いでしょうか? [ソース] @list; #この配列の要素に連想配列を入れる sub input{ #list.txtの中にはhogeとfugaの値がカンマ区切りで記入されている open(IN, "list.txt");  $i = 0; while ($xx = <IN>) { ($list[$i]{"hoge"}, $list[$i]{"fuga"}) = split /,/, $xx; $i++; } close(IN); } sub output{ for($i = 0; $i <= $#list; $i++){ print $list[$i]{"hoge"}, $list[$i]{"fuga"}; } }

    • ベストアンサー
    • Perl
  • perlのwhile,連想配列についてです。

    perlの連想配列を使い "AP" => "Apple" "BN" => "Banana" "OG" => "Orange" という値を格納します。 そしてこの格納した値をキーボードからの入力で取り出します。 このように表示したいです↓↓ "好きな果物を入力してください[AP/BN/OG]" そして入力を受けるとその果物の値を返し果物の名前を表示します↓↓ "あなたの好きな果物はAppleですね" ここまではできたのですが、この格納した果物以外を入力するとwhileで格納した果物が入力されるまで"3種類から選んでください”というようにループしたいです。 この場合どのように書けばよいのでしょうか。 whileの場合andで書きたい場合はどのように書けばよいのでしょうか。 また入力には<STDIN>を使い引数はchmopで処理すると良いとアドバイスを貰いましたがchompの使い道がよくわかりません。 そちらも説明していただけると幸いです。 わかりにくい質問ですがよろしくお願いします。

    • ベストアンサー
    • Perl
  • BShell 動的配列のループ処理について

    動的に変数名を作成した配列について、ループ処理を行う場合、どうしたらいいでしょうか 以下のような処理を書いたのですが、駄目でした。 a=0 while [ ${a} -ne 10 ] do     eval $(printf TEST%02d $a)=(aaa bbb ccc) #TEST00 - TEST10の配列が作られる。     # TEST00 - TEST10の配列の中身にたいして処理を行いたい。。。     for (( I=0; I < ${#`eval $(printf TEST%02d $a)[@]`}; ++I )) # エラー     do         // ここで処理したい・・・     done done いいアイディアがありましたらご教授よろしくお願いいたします。

  • 配列生成される限り、ループしたい

    function arrayxml (){ urlで取得したXMLから、配列を取得 return $hairetu; //戻り値は多次元配列 } $data = arrayxml(); $cnt = count($data); do { for ($i=0; $i < $cnt; $i++) { $data = arrayxml($data[$i][0]); } } while (count($data) > 0); //関数によって配列が作られる限り このスクリプトではループはうまくされません。 $data = arrayxml($data[$i][0]);を--->arrayxml($data[$i][0]);にすると $cnt分ループされますが、do~whileのループはなされません。 関数で配列が生成される限り、do~whileループをさせたいのですが正しい方法を教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 配列とハッシュの配列の要素を比較してファイルに書き出したい

    配列Aとハッシュの配列Bがあり、配列の内容をファイルに書き出そうとしています。このとき、パターンマッチをして、Aにしかない場合はAのデータを、Bにしかない場合はBを、両方にある場合は、Aをファイルに出力しようとしています。 以下のようなループのまわし方をしようとして、試行錯誤しましたが、うまい方法を思いつくことができませんでした。 ご教授いただければうれしいです。 while (defined $A[$i]) {  my ($name, $pass);  $j=0;  while (($name, $pass) = each(%{$B[$j]})){    if ($A[$i] =~ /$name/) {    }    $j++;  } $i++; }

    • ベストアンサー
    • Perl

専門家に質問してみよう