Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Perl Script New Line problem

by rajkrishna89 (Acolyte)
on Dec 21, 2011 at 08:44 UTC ( #944557=perlquestion: print w/ replies, xml ) Need Help??
rajkrishna89 has asked for the wisdom of the Perl Monks concerning the following question:

I have written a script which will search for a particular tag and when its found the next line wil be printed..the script works fine but its coming in a straight line ..
use strict; use warnings; use Win32::OLE; use Win32::OLE qw(in with); use Win32::OLE::Variant; use Win32::OLE::Const 'Microsoft Excel'; use Win32::OLE::Const 'Microsoft Word'; use Cwd; use File::Find; use Win32::OLE; use Win32::OLE::Enum; $Win32::OLE::Warn = 3; # die on errors. +.. my $out_file = 'output.txt'; open my $out_fh, '>', $out_file or die "Could not open file $out_file: +$!"; my $print_next = 0; #Globals our $Word; our $reviewchklists; my @scriptfiles; @scriptfiles=glob('*.doc'); foreach my $file (@scriptfiles) { my $var; my $filename = "D\:\\"; $var = $filename."$file"; print $var ; my $document = Win32::OLE -> GetObject("$var"); print "Extracting Text ...\n"; my @array; my $paragraphs = $document->Paragraphs(); my $enumerate = new Win32::OLE::Enum($paragraphs); while(my $paragraph = $enumerate->Next()) { my $text = $paragraph->{Range}->{Text}; $text =~ s/[\n\r\t]//g; $text =~ s/\x0B/\n/g; $text =~ s/\x07//g; chomp $text; my $Data .= $text; @array=split(/\.$/,$Data); foreach my $line( @array) { if ($print_next) { print $out_fh $line ; #No need to chomp - we print t +he "\n" } $print_next = ($line =~ /^Customer\sID : \sYes/); } } } #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The output is : ID :123 ID :257 ID :545 ID: 589

I want it to be printed as

ID :123

ID :257

ID :545

ID: 589

Comment on Perl Script New Line problem
Download Code
Re: Perl Script New Line problem
by Anonymous Monk on Dec 21, 2011 at 08:53 UTC

    Are you serious?

    If this part of the code doesn't print a newline

    print $out_fh $line ; #No need to chomp - we print the "\n"

    Maybe $line contains no newline, maybe you need to print one

    Say

    $line =~ s/\s+$//; $line = "$line\n";
Re: Perl Script New Line problem
by Ratazong (Prior) on Dec 21, 2011 at 08:54 UTC
    Simple. Change
    print $out_fh $line ; #No need to chomp - we print the "\n"
    to
    print $out_fh $line."\n" ; # we add a "\n"
    HTH, Rata
Re: Perl Script New Line problem
by perl.j (Pilgrim) on Dec 21, 2011 at 15:48 UTC

    If you are using Perl v5.12 and up, you can simply say

     say $out_fh $line

    say automatically adds a newline

    --perl.j

      not by default, but only if you enable modern perl, say through Modern::Perl or -E

      $ perl -e " say 1 Number found where operator expected at -e line 1, near "say 1" (Do you need to predeclare say?) syntax error at -e line 1, near "say 1" Execution of -e aborted due to compilation errors. $ perl -E " say 1 1
        Or he can simply say use 5.12.x.
        --perl.j

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://944557]
Approved by marto
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (15)
As of 2014-09-23 17:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (232 votes), past polls