http://www.perlmonks.org?node_id=953220


in reply to Joining an array

Here is a splice + join version...
my @t = qw(name John number 7 status unknown); my $i = -1; foreach my $x (1 .. $#t) { splice(@t, $i += 2, 0, $x % 2 ? '=' : '&'); } print join '', @t;

Replies are listed 'Best First'.
Re^2: Joining an array
by trizen (Hermit) on Feb 12, 2012 at 01:56 UTC
    A faster way:
    my @array = qw(name John number 7 status unknown); my $i = -2; my $x = $#array - 1; my $str = ''; while (1) { if ($i + 3 < $x) { $str .= $array[$i += 2] . '=' . $array[$i + 1] . '&'; } else { $str .= $i + 3 == $x ? $array[-3] . '=' . $array[-2] . '&' . $arra +y[-1] : $i + 2 == $x ? $array[-2] . '=' . $array[-1] : $array[-1]; last; } } print "$str\n";