Нужна помощь в создании условного оператора с массивом - PullRequest
0 голосов
/ 27 апреля 2018

Я хотел создать условный оператор, который бы говорил, является ли элемент массива нечетным или даже после получения элементов массива из строки. Вот код:

#! /usr/bin/perl
use warnings;
use strict;
my $numbers='23 45 34 12 9 3 56';
chomp $numbers;
my @getnum= (split(/ /, $numbers));
my $a;
if($getnum[0]>10){
  $a=$getnum[0];
  }
if($a%2==0){
  print $a, " is even";
  }
else{
print $a, " is odd";
}

Теперь проблема в том, что я сделал это только для первого элемента. Есть ли способ, которым я могу сделать это для всех элементов без создания условного оператора для каждого? Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 27 апреля 2018

Вам необходимо использовать цикл for (или foreach).

for my $n (@numbers) {    # Loops over @numbers, assigning each to $n
    if ( $n % 2 == 0 ) {
        print "$n is even"
    }
}

Кроме того, это довольно нелогично

my $numbers='23 45 34 12 9 3 56';
chomp $numbers;
my @getnum= (split(/ /, $numbers));

Если у вас есть строка, которую вы хотите разбить на пробел, есть специальный способ сделать это в Perl

split( ' ', $string );

Это разделит на произвольные пробелы (и удалит начальные и конечные пробелы), например.

my @words = split( ' ', '   one two    three  ' );
# @words is ('one', 'two', 'three')

Но если вы просто жестко кодируете число в самом скрипте, вы можете обойти все вместе split и использовать синтаксис «цитата-слова»

my @numbers = qw( 23 45 34 12 9 3 56 );

Надеюсь, это поможет.

...