in reply to Re: Re: Long URLs and Text::Wrap
in thread Long URLs and Text::Wrap

I said a simple test case, not your entire application. :)

Before we begin, I need to state right off the bat: use strict and warnings and use CGI or die;

Here is the test case I used. The results are not consistent with the problem you're seeing. See if you can reduce your application down to something as simple as this and see if your problem persists.

#!/usr/bin/perl use strict; use warnings; use Text::Wrap; my $data; { local $/; $data = <DATA>; } $Text::Wrap::columns = 60; print "Before:\n"; print $data; print "\n"; print "After:\n"; print wrap("", "", $data); print "\n"; __DATA__ This is a block of text that will precede the URL that is being presen +ted THE URL http://xxx.yyy.com/admin/more_grassroots/bigalerts/thefeder +algovernment/oy_veit/email/the_email_template.html This is the concluding block of text that will appear AFTER the URL. If this block is NOT at the bottom of the email, then we need to fix t +he wrapping algorithm!
This prints:
... After: This is a block of text that will precede the URL that is being presented THE URL http://xxx.yyy.com/admin/more_grassroots/bigalerts/thefeder algovernment/oy_veit/email/the_email_template.html This is the concluding block of text that will appear AFTER the URL. If this block is NOT at the bottom of the email, then we need to fix the wrapping algorithm!
As expected.

Replies are listed 'Best First'.
Re: Re: Re: Re: Long URLs and Text::Wrap
by davistv (Acolyte) on Nov 20, 2003 at 20:19 UTC
    Maybe my conundrum is different, but I'd like it to output text like below, with text wrapped but URLs not. How would you do this? I thought of doing a split on the URL regex I found here, but that could get messy quick...

    Thanks!
    Troy

    ---

    This is a block of text that will precede the URL that is
    being presented

    THE URL
    http://xxx.yyy.com/admin/more_grassroots/bigalerts/thefederalgovernment/oy_veit/email/the_email_template.html

    This is the concluding block of text that will appear AFTER
    the URL.

    If this block is NOT at the bottom of the email, then we
    need to fix the wrapping algorithm!

      Ok, so maybe I've figured this out on my own...

      Could it be simplified? I don't like the <<LINK X>> placeholders, but it's what I could figure out on a deadline.

      Cheers,
      Troy

      #!/usr/bin/perl use strict; use warnings; use Text::Wrap; require URI::Find; $Text::Wrap::columns = 60; my @links; my $data; { local $/; $data = <DATA>; } my $finder = URI::Find->new(\&uriFound); my $how_many_found = $finder->find(\$data); $data = wrap("", "", $data); # Substitute the links back in my $i = 0; foreach my $url (@links) { $data =~ s/<<LINK $i>>/$url/; $i++; } print "$data\n\n"; sub uriFound { push (@links, $_[1]); return "<<LINK $#links>>"; } __DATA__ This is a block of text that will precede the URL that is being presen +ted THE URL http://xxx.yyy.com/admin/more_grassroots/bigalerts/thefeder +algovernment/oy_veit/email/the_email_template.html This is the mid block of text that will appear between the URLs. http://www.google.com/search?q=POST+MSIE+GET&ie=UTF-8&oe=UTF-8 This is the after block of text that will appear after the URLs. If this block is NOT at the bottom of the email, then we need to fix t +he wrapping algorithm!

      -------

      Output:

      This is a block of text that will precede the URL that is being presented THE URL http://xxx.yyy.com/admin/more_grassroots/bigalerts/thefeder +algovernment/oy_veit/email/the_email_template.html This is the mid block of text that will appear between the URLs. http://www.google.com/search?q=POST+MSIE+GET&ie=UTF-8&oe=UTF-8 This is the after block of text that will appear after the URLs. If this block is NOT at the bottom of the email, then we need to fix the wrapping algorithm!