in reply to Preventing Blank Lines Between Printed Array Elements

G'day immamanatee,

Welcome to the monastery.

You're reading your data an inordinate amount of times:

As you're dealing with paragraphs, consider reading your input as paragraphs and processing it just once:

Here's an example using your data:

#!/usr/bin/env perl -l use strict; use warnings; my @data = do { local $/ = ''; <DATA> }; my %urls = map { /^\[(\d+)/ => $_ } split /^/ => $data[-1]; print $data[$_], @urls{$data[$_] =~ /\[.*?\]\[(\d+)\]/g} for 0 .. $#da +ta - 1; __DATA__ This is a an example of [Markdown][1] footer links. I'm trying to use +[Perl][2] to organize them more coherently. But I'm getting too many newlines and I'm hoping the [PerlMonks][3] ca +n help. [1]: https://daringfireball.net/projects/markdown/ [2]: http://www.perl.org/ [3]: http://www.perlmonks.org/

Output:

This is a an example of [Markdown][1] footer links. I'm trying to use +[Perl][2] to organize them more coherently. [1]: https://daringfireball.net/projects/markdown/ [2]: http://www.perl.org/ But I'm getting too many newlines and I'm hoping the [PerlMonks][3] ca +n help. [3]: http://www.perlmonks.org/

-- Ken

Replies are listed 'Best First'.
Re^2: Preventing Blank Lines Between Printed Array Elements
by immamanatee (Initiate) on May 05, 2014 at 16:52 UTC
    Thanks Ken. My current sloppy code works OK, as the files are small, but I'll study your solution for the future.