red01\nred02\n…を出すスクリプト。

red01
red02
red03
red04

みたいなのを、

command red 01 - 04

とかで出力できるスクリプト*1

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

my $arg = join " ", @ARGV;

for( split /,/, $arg ){
    my( $word, $numbers ) = /(\w+?)\s*([\d\-\s]+)/;
    next unless defined $word and defined $numbers;

    # $numbersが、単に数字だけだったらそのまま出力。                                                                             
    if( $numbers =~ /^\s*\d+\s*$/ ){
        ( $numbers ) = ( $numbers =~ /^\s*(\d+)\s*$/ ); # 空白の除去。                                                           
        print $word, $numbers, "\n";
        next;
    }

    my( $number_min, $number_max ) = ( $numbers =~ /(\d+)\s*\-\s*(\d+)/ );
    next unless defined $number_min and defined $number_max;

    for( $number_min .. $number_max ){
        print $word, $_, "\n";
    }
}

*1:あ、golf-1とかは無理だ、"-"が。