On 22/02/2011 13:25, Kill Switch wrote:
Hi,

I've tried to fiure this out on my own but hit a road block. I'm reading in
an external file, then doind a search and replace. I am also using the
following to break lines at 256 characters

use Text::Wrap qw(wrap $columns $huge);
$columns = 256;
$huge = "die";


Problem I'm having is if there is a tag like below

<test attr1="var" attr2="var" attr3="var" attr4="var" attr5="var"
attr6="var" attr7="var">

It may get broken like so:

<test attr1="var" attr2="var" attr3="var"
attr4="var" attr5="var" attr6="var" attr7="var">

I don't want this to happen. How can I avoid this? The program breaks lines
at 256 characters. If its in the middle of a tag I want it to break before
or after and NOT in between. How do I do this?



Code below:

#!/usr/local/bin/perl

require 5.000;
use Env;
use Cwd;
use File::Basename;
use Text::Wrap qw(wrap $columns $huge);

$columns = 256;
$huge = "die";

my $infile = $ARGV[0];
open(FILEREAD, "$infile.txt");
  open(FILEWRITE, ">  $infile.temp");
    $i=1;
   while (<FILEREAD>)
   {
    chomp $_;
    $_ =~ s/<p>/\n<p>/ig;
    print FILEWRITE wrap("", "", $_), "\n";
    $i++;
   }
  close FILEWRITE;
close FILEREAD;

You can't prevent Text::Wrap from breaking XML tags as it knows nothing about them. I suggest you do one of the following:

- Parse your original file into tags and data, wrap the data elements
  separately and then recombine them.

- Wrap the entire file, then check for broken tags. If one id found
  then put a newline before it and rewrap from there onward. Repeat
  until clean.

HTH,

Rob

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to