Patricia Hinman wrote:
> 
> Hi everyone,

Hello,

> I have a \n character in my program that won't go
> away.

Are you sure?


> portion of program:
> 
> open(CAP, ">./captions.txt")|| push(@message,
> "Couldn't open the captions.txt file for writing,
> $!");

Do you really what to try and write to this file if you can't open it?


> chomp(@captions);

This will remove the value of the $/ variable from the end of every
element of @captions.


> for(my$i=0;$i<@caption;$i++){
> $_ = $caption[$i];

Would more properly be written as:

for ( @caption ) {

Then $_ would be aliased to the actual elements of @caption instead of
your way where changing $_ does not change anything in @caption.

> s/\n//g;

Changes $_, does not change $caption[$i].

> #going to extremes!!!
> if(/^\s/){for(my$i=0;$i<$i+1;$i++){if(/\s$/){s/\s$//}else{last}}}
> if(/\n/){$oops = "yes, found a space in "}
> print "$oops caption $i is $_<BR>";
> }
> my($printcap) = join("|",@caption);
> $printcap=~ s/\n//g;
> print CAP "$printcap";}

Quoting a scalar variable is almost always unnecessary.

> close(CAP);
> 
> Output:
> Variety Story
> |Local Church
> |Local Fairgrounds
> |Bellys full
> 
> Do I have to reinstall perl to get it to remove the
> new line?

No.

> In one of my other files while writing it printed out
> a square box for a newline character that I was trying
> to remove.  Has anyone had this happen?


Try this instead:

for ( @caption ) { # modify the contents of array
    tr/\r\n//d;    # remove all CRs and NLs from current element
    s/^\s+//;      # remove all whitespace from beginning
    s/\s+$//;      # remove all whitespace from end
    }

if ( open CAP, ">./captions.txt" ) {
    print CAP join '|', @caption;
    close CAP;
    }
else {
    push @message, "Couldn't open the captions.txt file for writing,
$!";
    }



John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to