Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
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 drinking their drinks and smoking their pipes about the Monastery: (12)
As of 2014-07-31 19:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (251 votes), past polls