/ / Simple Perl грешка за зареждане на цикъл - perl

Проста грешка за запълване на цикъл на Perl - perl

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";
}
}

Тя не работи

Искам същата функция под кода

Можеш ли да ми дадеш някаква помощ

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 за отговор № 1

Използвайте Позовавания за итерация по различните масиви.

perldoc perlref - препратки към

perldoc perldsc графична готварска книга за структурата на данни

#/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