gpt4 book ai didi

perl - 是否有用于解析数字(包括范围)的 Perl 模块?

转载 作者:行者123 更新时间:2023-12-02 06:24:41 24 4
gpt4 key购买 nike

是否有一个模块可以为我做这件事?

sample_input: 2, 5-7, 9, 3, 11-14

#!/usr/bin/env perl
use warnings; use strict; use 5.012;

sub aw_parse {
my( $in, $max ) = @_;
chomp $in;
my @array = split ( /\s*,\s*/, $in );
my %zahlen;
for ( @array ) {
if ( /^\s*(\d+)\s*$/ ) {
$zahlen{$1}++;
}
elsif ( /^\s*(\d+)\s*-\s*(\d+)\s*$/ ) {
die "'$1-$2' not a valid input $!" if $1 >= $2;
for ( $1 .. $2 ) {
$zahlen{$_}++;
}
} else {
die "'$_' not a valid input $!";
}
}
@array = sort { $a <=> $b } keys ( %zahlen );
if ( defined $max ) {
for ( @array ) {
die "Input '0' not allowed $!" if $_ == 0;
die "Input ($_) greater than $max not allowed $!" if $_ > $max;
}
}
return \@array;
}

my $max = 20;
print "Input (max $max): ";
my $in = <>;
my $out = aw_parse( $in, $max );
say "@$out";

最佳答案

CPAN 搜索 number range 给了我这个,它看起来很像你要找的东西:

Number::Range

这是一个如何在 aw_parse 函数中使用该模块的示例:

$in =~ s/\s+//g; # remove spaces
$in =~ s/(?<=\d)-/../g; # replace - with ..

my $range = new Number::Range($in); # create the range
my @array = sort { $a <=> $b } $range->range; # get an array of numbers

应用于问题的样本:

Input (max 20): 2, 5-7, 9, 3, 11-14
2 3 5 6 7 9 11 12 13 14

关于perl - 是否有用于解析数字(包括范围)的 Perl 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2816816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com