Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: Preventing Blank Lines Between Printed Array Elements

by kcott (Archbishop)
on May 05, 2014 at 07:11 UTC ( [id://1085005]=note: print w/replies, xml ) Need Help??


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:

  • Read all input into $text using slurp mode ($/ = undef).
  • Read all data to generate @url_list.
  • Read all data to remove URL lines.
  • Read all remaining lines in an outer loop.
  • Read each line in an inner loop to generate link numbers.
  • Read the entire @url_list in every pass through the inner loop.

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

  • Read all input into an array using paragraph mode ($/ = '').
  • Create a hash, mapping link number to URL, using just the last paragraph of text.
  • Loop through all but the last paragraph, printing each paragraph and any associated footnotes.

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.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1085005]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (6)
As of 2024-04-23 10:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found