in reply to selective join

If you always know the number of things in @array, it's probably just best to write the odd indices explicitly and use an array slice:
my $desc = join "_" => @array[1,3,5];
If @array has a variable size, you'll have to figure out the odd indices on the fly:
my $desc = join "_" => @array[ grep { $_ % 2 } 0 .. $#array ];
You can also get odd indices this way too, but not as elegantly as with grep:
my $desc = join "_" => @array[ map { 2*$_ + 1 } 0 .. (@array/2)-1 ];

blokhead