in reply to Inverse slices

This uses a hash for the index rather than an array and push with a ternary.

johngg@aleatico:~$ perl -Mstrict -Mwarnings -MData::Dumper -E 'say q{} +; my @arr = ( q{a} .. q{m} ); my %idx = map { $_ => 1 } 2, 7 .. 9, 12; my @slc; my @inv; push @{ $idx{ $_ } ? \ @slc : \ @inv }, $arr[ $_ ] for 0 .. $#arr; print Data::Dumper->Dumpxs( [ \ @arr, \ @slc, \ @inv ], [ qw{ *arr *slc *inv } ] );' @arr = ( 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm' ); @slc = ( 'c', 'h', 'i', 'j', 'm' ); @inv = ( 'a', 'b', 'd', 'e', 'f', 'g', 'k', 'l' );

I hope this is of interest.

Update: Removed erroneous space in Dumpxs call which was mucking up the output.

Cheers,

JohnGG