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/


Reply via email to