In any sort of production code, i would go so far as to recommend a clearer if slower classic C-style for loop. Yes, it's not optimized, but it is maintainable by someone who isn't a perl expert:
my $result = ''; for(my $i = 0; $i < $n; $i++) { $result .= "$i cat\n\man\n"; }
Or a slightly different variant that would lead itself to easier debugging:
my @lines; for(my $i = 0; $i < $n; $i++) { push @lines, "$i cat"; push @lines, "man"; } #print Dumper(\@lines); my $result = join("\n", @lines);
Unless it's really timing critical code (in which case thinking about doing the stuff in XS/Inline::C is also an option), long term maintainability and readability is (almost) always more important than saving a couple percent CPU cycles.
So the answer, at least from my point of view: Can you do it faster with a regular expression: Maybe. Can you do it better? Not a chance, unless you add a few long paragraphs of explanations in the code comments that clearly lays out how to chance/update the code in a few years to fit the changing requirements of the project.
In reply to Re^3: Can I get some help with a regex please
by cavac
in thread Can I get some help with a regex please
by misterperl
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |