Since you're just doing it for fun, here's an alternate way. Just change comma to dashes where needed and clean up the runs later :)
#!/usr/bin/perl
use strict; # https://perlmonks.org/?node_id=11162490
use warnings;
for ( split /^/, <<END )
Attacca Quartet:1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20,22,23
+,24,25,26,27,28
John Patitucci:1,2,3,5,8,11,12,13,14,15,16,17,19,25,26,27,28
Roomful of Teeth:1,3,5,7,9,12,14,16,19,21,24,26,28
Sō Percussion:1,3,4,5,6,7,8,11,12,13,14,15,16,18,19,21,22,23,24,2
+5,26,27,28
Has Dashes:1,3-6,7-9,11,13-20,21,22-25,30,33-34,351,520
END
{
print "\n$_";
print s/\b(\d+)\K,(?=(??{$1+1})\b)/-/gr =~ s/-[\d-]*-/-/gr;
}
Outputs:
Attacca Quartet:1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20,22,23
+,24,25,26,27,28
Attacca Quartet:1-8,10-20,22-28
John Patitucci:1,2,3,5,8,11,12,13,14,15,16,17,19,25,26,27,28
John Patitucci:1-3,5,8,11-17,19,25-28
Roomful of Teeth:1,3,5,7,9,12,14,16,19,21,24,26,28
Roomful of Teeth:1,3,5,7,9,12,14,16,19,21,24,26,28
Sō Percussion:1,3,4,5,6,7,8,11,12,13,14,15,16,18,19,21,22,23,24,2
+5,26,27,28
Sō Percussion:1,3-8,11-16,18-19,21-28
Has Dashes:1,3-6,7-9,11,13-20,21,22-25,30,33-34,351,520
Has Dashes:1,3-9,11,13-25,30,33-34,351,520