我想创建一个条件语句,可以说一个数组的元素是奇数还是偶数从一行获取数组的元素之后。这是代码:
#! /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";
}
现在的问题是我只为第一个元素做了。有没有办法可以为所有元素执行此操作而不为每个元素创建条件语句?谢谢你的帮助!
答案 0 :(得分:3)
您需要使用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
全部并使用'quote-words'语法
my @numbers = qw( 23 45 34 12 9 3 56 );
希望这有帮助。