Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re: Re: Re: Re: I'm so confused

by jlongino (Parson)
on Nov 24, 2001 at 12:21 UTC ( #127252=note: print w/replies, xml ) Need Help??

in reply to Re: Re: Re: I'm so confused
in thread I'm so confused

st4k, as rchiav stated and as I showed you earlier, you probably don't want to store the newline characters in your array. In my example using print join("\n",@out); I demonstrated a way to manipulate the array (without changing its contents) and printing the results each element on a new line. By storing the data without newlines you could also do something slightly different:
my @out = qw(one two three four five six seven eight nine); my $i = 0; foreach (@out) { print "\$out[",$i++,"] = '$_'\n"; } =output= $out[0] = 'one' $out[1] = 'two' $out[2] = 'three' $out[3] = 'four' $out[4] = 'five' $out[5] = 'six' $out[6] = 'seven' $out[7] = 'eight' $out[8] = 'nine'
But if you had stored the newlines in the array, the last ' in each line would've been pushed to the next line by the newline character stored in the array:
=output= $out[0] = 'one ' $out[1] = 'two ' $out[2] = 'three ' $out[3] = 'four ' $out[4] = 'five ' $out[5] = 'six ' $out[6] = 'seven ' $out[7] = 'eight ' $out[8] = 'nine '
You have more flexibility if you store only the data.

In your example @out = join "\n", @out; you are destroying your array. Instead of the output above you would get the following output using the same print loop:

my @out = qw(one two three four five six seven eight nine); @out = join "\n", @out; my $i = 0; foreach (@out) { print "\$out[",$i++,"] = '$_'\n"; } =output= $out[0] = 'one two three four five six seven eight nine'
Instead of having 9 rows you now have only one row made up of a string with interspersed newlines. As a rule, most people don't print an array using   print @array; except when debugging.

Try playing around with the print loop above to test other types of array manipulation. It will give you a better idea of how your data is stored in the array structure.


Replies are listed 'Best First'.
Re: Re: Re: Re: Re: I'm so confused
by dragonchild (Archbishop) on Nov 26, 2001 at 20:47 UTC
    Instead of join to add the newlines, you want to use map. Something along the lines of:
    @out = map { "$_\n" } @out;
    What map does is to do the action in {} to every element in the array. :-)

    We are the carpenters and bricklayers of the Information Age.

    Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://127252]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (4)
As of 2021-10-22 13:22 GMT
Find Nodes?
    Voting Booth?
    My first memorable Perl project was:

    Results (85 votes). Check out past polls.