The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl

use strict;
use warnings;

use Test::More tests => 9;
use Rex::Commands;

my %tests = (
  'server1.domain.com'       => [qw/server1.domain.com/],
  'server[9..10].domain.com' => [
    qw/
      server9.domain.com
      server10.domain.com
      /
  ],
  'server[6..10/2].domain.com' => [
    qw/
      server6.domain.com
      server8.domain.com
      server10.domain.com
      /
  ],
  'server[6,8,10].domain.com' => [
    qw/
      server6.domain.com
      server8.domain.com
      server10.domain.com
      /
  ],
  'server[4..6,8,10..12].domain.com' => [
    qw/
      server4.domain.com
      server5.domain.com
      server6.domain.com
      server8.domain.com
      server10.domain.com
      server11.domain.com
      server12.domain.com
      /
  ],
  'server[4..6,8,10..16/2].domain.com' => [
    qw/
      server4.domain.com
      server5.domain.com
      server6.domain.com
      server8.domain.com
      server10.domain.com
      server12.domain.com
      server14.domain.com
      server16.domain.com
      /
  ],
  'server[1..3,2..4].domain.com' => [
    qw/
      server1.domain.com
      server2.domain.com
      server3.domain.com
      server2.domain.com
      server3.domain.com
      server4.domain.com
      /
  ],
  'server[01..03].domain.com' => [
    qw/
      server01.domain.com
      server02.domain.com
      server03.domain.com
      /
  ],
  'server[09..11/2].domain.com' => [
    qw/
      server09.domain.com
      server11.domain.com
      /
  ],
);

for my $test ( sort keys %tests ) {
  my @result = Rex::Commands::evaluate_hostname($test);
  is_deeply \@result, $tests{$test}, $test;
}