in reply to cut columns with an array slice

Another interpretation (untested) of what you might have intended:
my %dont_want = map {$_=>undef} @columns; while (<$file>){ my @arr = split; print @arr[map {!exists $dont_want{$_}}0..$#arr],"\n"; }

     Syntactic sugar causes cancer of the semicolon.        --Alan Perlis