sub multiplex { my $ret = [[]]; for (@{shift()}) { my $bref = ref($_) ? $_ : [$_]; $ret = [ map { my $b_item = $_; map [ @$_, $b_item], @$ret; } @$bref ]; } $ret; }