Beefy Boxes and Bandwidth Generously Provided by pair Networks Cowboy Neal with Hat
go ahead... be a heretic
 
PerlMonks  

print an array for paragraphs

by brassmon_k (Sexton)
on Aug 20, 2001 at 23:36 UTC ( #106334=perlquestion: print w/ replies, xml ) Need Help??
brassmon_k has asked for the wisdom of the Perl Monks concerning the following question:

This should be easy for you guys but I never had to do it.

Okay I'm reading paragraphs in from $/
and splitting on the newline -
$/ = ""; while ($para = <>) { @lines = split(/\n/, $para); if (@lines == 1) { $lastHeading = $lines[0]; next; } if ($para =~ "mSOriginating") { if ($para =~ "$msisdn") { print "@lines"; } } }
My problem is when the results print it comes out all jumbled. It prints readable text from what it found but it doesn't print them out on newlines. It's just one line right after the other like constant text. Let's say you had the numbers 1 through 10 but you wanted them to print out on newlines for each number - Example:
What is happening: 12345678910 What I want: 1 2 3 4 5 etc....

How can I get the print to do that? I know it's something with "$\" (The output record separator) or the "-l" command handling option for PERL but I don't know how to use them and the books I'm using don't help much in that area.

The Brassmon_k

Comment on print an array for paragraphs
Select or Download Code
Re: print an array for paragraphs
by brassmon_k (Sexton) on Aug 20, 2001 at 23:42 UTC
    Nevermind I got the answer. All I had to do is print $para instead of messing around with all that formatting. DOH!
    print "$para";

    Sorry to bother ya again.

    The Brassmon_k
Re: print an array for paragraphs
by Cirollo (Friar) on Aug 20, 2001 at 23:44 UTC
    If you want to print @lines, with each element on a new line:
    $\ = "\n"; # puts a \n after each print print for @lines;
Re: print an array for paragraphs
by lestrrat (Deacon) on Aug 20, 2001 at 23:52 UTC

    split removes the separator from the resulting tokens:

    my $str = "1\n2\n3\n4"; my @tokens = split( /\n/, $str ); # now tokens contain # ( "1", "2", "3", "4" ), NOT ( "1\n", "2\n", "3\n", "4\n" )

    And no, $\ is not the output record separator, the output record separator is $,

       Update Above was not true, $\ is output record separator.
       $, was output field separator
    

    But then again, with your code I don't understand the reasoning to use split. you could just

    my $para = ..... # whatever. # so $para is ( possibly ) a multi-line parameter my $first_line_break = index( $para, "\n" ); if( $first_line_break > 0 ) { $lastHeading = substr( $para, 0, $first_line_break ); next; } if( $para =~ /mSOriginating/ && $para =~ /$msisdn/ ) { print $para; }

    This would do, no?

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (11)
As of 2014-04-17 19:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (454 votes), past polls