2016-05-27 7 views
-3
for ($i=1; $i<=3; $i++) { 
    if (@user$i[3] >= 4.0) { 
     print "first"; 
    } elsif (@user$i[3] < 4.0 and @user$i[3] >= 2.5) { 
     print "second"; 
    } else { 
     print "third"; 
    } 
} 

それは私がコードシンプルなPerlのforループエラー

以下同じ機能は、あなたが私を反復処理する

if (@user1[3] >= 4.0) { 
    print "first"; 
} elsif (@user1[3] < 4.0 and @user1[3] >= 2.5) { 
    print "second"; 
} else { 
    print "third"; 
} 

if (@user2[3] >= 4.0) { 
    print "first"; 
} elsif (@user2[3] < 4.0 and @user2[3] >= 2.5) { 
    print "second"; 
} else { 
    print "third"; 
} 

if (@user3[3] >= 4.0) { 
    print "first"; 
} elsif (@user3[3] < 4.0 and @user3[3] >= 2.5) { 
    print "second"; 
} else { 
    print "third"; 
} 
+1

この[URL]を確認してください(http://stackoverflow.com/help)それを –

+1

(1)配列 '@ arr'の要素は' $ arr [3] 'で、' $ 'はスカラーなので要素は' $ arr [3] 'です。 (2)実行コードに変数_names_を設定しないでください。それは推奨されていません。あなたは常に他の良い方法で問題を解決することができます。たとえば、これを試してみてください。配列 '@ users'は配列に対して_references_を持つことができます。ユーザー1,2、...の心配はありません。ただ '@ users'を通して繰り返します。 [配列の配列](http://perldoc.perl.org/perllol.html)と[複合データ構造](http://perldoc.perl.org/perldsc.html)のチュートリアルを参照してください。配列インデックスは '0'で始まります。常に**警告を使用する; **。言語を読んで、これはあまりにも基本的です。 – zdim

+1

_うまくいかない_意味がありません。あなたは何を期待しているのか、何を得ているのかがもっと助けになるでしょう。 – serenesat

答えて

1

使用の参照をいくつかの助けを与えることができるしたい

を動作しません。異なる配列。

perldoc perlref - Perlのリファレンス

perldoc perldsc - perlのデータ構造クックブック

#/usr/bin/env perl 

use strict; 
use warnings; 

my @user1 = (1, 2, 3, 4); 
my @user2 = (4, 3, 1, 2); 
my @user3 = (2, 1, 4, 3); 

my $data = [ \@user1, \@user2, \@user3 ]; 
my $field = 3; # Fourth field, perl is 0-based           

for my $users (@$data) { 
    # $users->[...] instead of $users[...] because $users is an array reference    
    if ($users->[$field] >= 4.0) { 
     print "first"; 
    } elsif ($users->[$field] < 4.0 and $users->[$field] >= 2.5) { 
     print "second"; 
    } else { 
     print "third"; 
    } 
    print "\n"; 
} 

出力

first 
third 
second 
+0

いいえ、この種のタスクに 'eval'を使用しないでください。代わりにデータ構造を変更し、単に@zdimとしてすでに提案されている配列の配列を使用してください。技術的にはこのようにすることが可能であるという理由だけで、このようにする必要はありません。ちょうど私の2セント。 – dgw

+0

ありがとう@dgw。提案されているように 'eval'以外のバージョンに更新されました。よりシンプルであると合意しました。 – xxfelixxx