On Tue, Feb 22, 2011 at 5:48 AM, Rob Dixon <rob.di...@gmx.com> wrote: > 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. For this task you can use HTML::Parser http://search.cpan.org/~gaas/HTML-Parser-3.68/Parser.pm
> > - 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/ > > > -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/