如何从Perl中的整数列表中获取范围?

Sue*_*ezy 4 arrays perl

我有一系列数字:

@numbers = 1,2,3,6,8,9,11,12,13,14,15,20
Run Code Online (Sandbox Code Playgroud)

我想以这种方式打印它:

1-3,6,8-9,11-15,20
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?当然我尝试使用最常见的"循环",但仍然没有得到它.

cjm*_*cjm 12

你可以使用Set :: IntSpan :: Fast:

use Set::IntSpan::Fast;

my @numbers = (1,2,3,6,8,9,11,12,13,14,15,20);

my $set = Set::IntSpan::Fast->new;
$set->add(@numbers);
print $set->as_string, "\n";
Run Code Online (Sandbox Code Playgroud)