Yes, that's fine, but.
It would be more useful to ask "will this give me the output I want" (with a sample output provided) rather than "is this code OK". This is the equivalent of saying "perl -c reports no syntax errors - guess it works!" instead of "my tests pass - guess it works!".
- Do you want to use the # as a delimiter in the array?
- Do you want to throw out any '#' entries?
- Is there some other result that I haven't guessed?
To make sub-arrays at each '#': use strict;
use warnings;
use Data::Dumper;
my @broken_up;
my @array = qw( 1 2 3 # 4 5 # 6 7 8 9 # 10);
my $position = 0;
$broken_up[0] = [];
foreach my $item (@array) {
if ($item eq '#') {
$position++;
$broken_up[$position] = [];
}
else {
push @{ $broken_up[$position] }, $item;
}
}
print Dumper(\@broken_up);
gives
$VAR1 = [
[
'1',
'2',
'3'
],
[
'4',
'5'
],
[
'6',
'7',
'8',
'9'
],
[
'10'
]
];
Now you have an array of arrays, broken at the '#'s. (The extra level of nesting is because I dumped a reference to the output array.)
If you just want to throw the '#'s out:
@array = qw( 1 2 # 3 4 5 # 6 7 8 9 # 10);
@array = grep { $_ ne '#' } @array;
print "@array\n";
gives
1 2 3 4 5 6 7 8 9 10
Notice that these are wildly different, because we don't know what you're actually trying to do. Obviously it doesn't matter whether or not the style is good ... if the result is wrong. :)
|