perl 如何检查数组中是否有非整数元素?

mzillmmw  于 2023-01-31  发布在  Perl
关注(0)|答案(2)|浏览(168)

例如,我有一个数组= [1,2,3,4,5,a,#,4],如何检查数组中是否有非整数的元素?如果数组中有非整数的元素,那么我计划让脚本失败,这是一个函数。

htrmnn0y

htrmnn0y1#

Type::Tiny提供了一个快速的方法(all)来检查列表中的所有元素是否都与特定的类型内容匹配。

use strict; use warnings; use feature qw( say );
use Types::Common qw( Int PositiveInt );

my @array = ( 1, 2, 3, "foo" );

if ( not Int->all( @array ) ) {
  say "They're not all integers";
}

if ( PositiveInt->all( @array ) ) {
  say "They're all positive integers";
}

# Another way to think about it:

my $NonInteger = ~Int;

if ( $NonInteger->any( @array ) ) {
  say "There's at least one non-integer";
}
iaqfqrcu

iaqfqrcu2#

如果快速和肮脏足够好:

my @a = (1,2,3,-4,0,5,4," -32   ");
die if grep { !defined or !/^\s*-?\d+\s*$/ } @a;

然而,这不能很好地处理例如"1_200_499""0e0"这样的有效整数(在Perl中)。

相关问题