Fellow Monasterians:
I have an array where I want to eliminate all the elements between, and including, the two starting and ending elements. So, in my example below, I'd like to end up with a @array of one 1{ two } three six, eliminating 2{ four five }. I found a way (thanks to Q&A), but it looks rather clunky (and I get a "Use of initiated value" in my second regex test). Is there a shorter way, like grep or map (though I like this one because it doesn't create a new array)? Golf anyone?
#!/usr/bin/perl -w use strict; my @array = qw( one 1{ two } three 2{ four five } six ); my $i = 0; my $start; while ( $i <= $#array ) { if ($start && $array[$i] =~ /}/) { splice @array, $i, 1; undef $start; $i++; } if ($start || $array[$i] =~ /2{/) { $start = 1; splice @array, $i, 1; } else { $i++; } } print @array;
Thanks all!
Update: fixed spelling and clarity
In reply to A better way to splice between 2 elements in array by bradcathey
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |