Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Perl > Perl Misc > printing array problem

Reply
Thread Tools

printing array problem

 
 
Mark Day
Guest
Posts: n/a
 
      09-28-2004
Any tips on what I'm doing wrong here appreciated.

I'm using perl version 5.6.1 on Win98,

and this test script i've written, I was hoping would print each element
of this array, on a new line, then print the array again in reverse order.

What actually output's is the same array twice with all elements printed
on the same line.

What is wrong with my attempt to reverse the array, adn why does each
scalar not print on a new line?

thanks.

--code snippet---

#!C:\perl\bin\perl

@array = qq(1 2 3 4 5 6 7 8 9 10 11 12 baker's dozen);

foreach (@array)

{

print $_;

print "\n";

}

@array = reverse @array;

foreach (@array) {

print $_;

print "\n";

}

 
Reply With Quote
 
 
 
 
Mark Clements
Guest
Posts: n/a
 
      09-28-2004
Mark Day wrote:
> Any tips on what I'm doing wrong here appreciated.
>
> I'm using perl version 5.6.1 on Win98,
>
> and this test script i've written, I was hoping would print each element
> of this array, on a new line, then print the array again in reverse order.
>
> What actually output's is the same array twice with all elements printed
> on the same line.
>
> What is wrong with my attempt to reverse the array, adn why does each
> scalar not print on a new line?
>
> thanks.
>
> --code snippet---
>
> #!C:\perl\bin\perl
>
> @array = qq(1 2 3 4 5 6 7 8 9 10 11 12 baker's dozen);


qq() gives you an interpolated string - man perlop. what you are
effectively doing here is

@array = "1 2 3 4 5 6 7 8 9 10 11 12 baker's dozen";

which will set $array[0] to "1 2 3 4 5 6 7 8 9 10 11 12 baker's dozen"
and leave the rest of the array empty.

you probably mean

my @array = qw(1 2 3 4 5 6 7 8 9 10 11 12 baker's dozen);

though that will give you "baker's" and "dozen" as separate array elements.

You can also skip the

@array = reverse @array

step

ie

foreach( reverse @array){

....

Mark
 
Reply With Quote
 
 
 
 
Mark Day
Guest
Posts: n/a
 
      09-28-2004


Mark Clements wrote:

> qq() gives you an interpolated string - man perlop. what you are
> effectively doing here is
>
> @array = "1 2 3 4 5 6 7 8 9 10 11 12 baker's dozen";
>
> which will set $array[0] to "1 2 3 4 5 6 7 8 9 10 11 12 baker's dozen"
> and leave the rest of the array empty.
>
> you probably mean
>
> my @array = qw(1 2 3 4 5 6 7 8 9 10 11 12 baker's dozen);
> though that will give you "baker's" and "dozen" as separate array elements.
>
> You can also skip the
>
> @array = reverse @array
>
> step
>
> ie
>
> foreach( reverse @array){
>
> ...
>
> Mark



Great! thanks.

 
Reply With Quote
 
Anno Siegel
Guest
Posts: n/a
 
      09-28-2004
Mark Day <(E-Mail Removed)> wrote in comp.lang.perl.misc:
> Any tips on what I'm doing wrong here appreciated.
>
> I'm using perl version 5.6.1 on Win98,
>
> and this test script i've written, I was hoping would print each element
> of this array, on a new line, then print the array again in reverse order.
>
> What actually output's is the same array twice with all elements printed
> on the same line.
>
> What is wrong with my attempt to reverse the array, adn why does each
> scalar not print on a new line?
>
> thanks.
>
> --code snippet---
>
> #!C:\perl\bin\perl
>
> @array = qq(1 2 3 4 5 6 7 8 9 10 11 12 baker's dozen);


[snip]

Look up what qq() does. I guess you meant to say qw() instead.

Anno
 
Reply With Quote
 
Graham Wood
Guest
Posts: n/a
 
      09-28-2004
Mark Day wrote:
>
> hoping would print each element
> of this array, on a new line, then print the array again in reverse order.
>
> What is wrong with my attempt to reverse the array, adn why does each
> scalar not print on a new line?
>
>
> #!C:\perl\bin\perl
>
> @array = qq(1 2 3 4 5 6 7 8 9 10 11 12 baker's dozen);


Your problem is that you're using qq which will surround the contents of
the parenthesis with double quotes rather than qw which will surround
each word in the parenthesis with double quotes. You are basically
creating and array with one element in it: "1 2 3 4 5 6 7 8 9 10 11 12
baker's dozen" and reversing this then gives you the same single element
in reverse order.

Replace qq with qw and see what happens.

Graham

>
> foreach (@array)
>
> {
>
> print $_;
>
> print "\n";
>
> }
>
> @array = reverse @array;
>
> foreach (@array) {
>
> print $_;
>
> print "\n";
>
> }

 
Reply With Quote
 
Anno Siegel
Guest
Posts: n/a
 
      09-28-2004
Graham Wood <(E-Mail Removed)> wrote in comp.lang.perl.misc:
> Mark Day wrote:


[...]

> > @array = qq(1 2 3 4 5 6 7 8 9 10 11 12 baker's dozen);

>
> Your problem is that you're using qq which will surround the contents of
> the parenthesis with double quotes rather than qw which will surround
> each word in the parenthesis with double quotes.


That is wrong. "qw()" surrounds the whole string with single quotes,
then splits the result on whitespace.

Anno
 
Reply With Quote
 
Anno Siegel
Guest
Posts: n/a
 
      09-28-2004
Anno Siegel <(E-Mail Removed)-berlin.de> wrote in comp.lang.perl.misc:
> Graham Wood <(E-Mail Removed)> wrote in comp.lang.perl.misc:
> > Mark Day wrote:

>
> [...]
>
> > > @array = qq(1 2 3 4 5 6 7 8 9 10 11 12 baker's dozen);

> >
> > Your problem is that you're using qq which will surround the contents of
> > the parenthesis with double quotes rather than qw which will surround
> > each word in the parenthesis with double quotes.

>
> That is wrong. "qw()" interprets the whole string in single-quote
> style, then splits the result on whitespace.
>
> Anno



 
Reply With Quote
 
Anno Siegel
Guest
Posts: n/a
 
      09-28-2004
Graham Wood <(E-Mail Removed)> wrote in comp.lang.perl.misc:
> Mark Day wrote:


[...]

> > @array = qq(1 2 3 4 5 6 7 8 9 10 11 12 baker's dozen);

>
> Your problem is that you're using qq which will surround the contents of
> the parenthesis with double quotes rather than qw which will surround
> each word in the parenthesis with double quotes.


That is wrong. "qw()" treats the whole string as single quoted,
then splits the result on whitespace.

Anno

 
Reply With Quote
 
Graham Wood
Guest
Posts: n/a
 
      09-28-2004
Anno Siegel wrote:
>
> Graham Wood <(E-Mail Removed)> wrote in comp.lang.perl.misc:
> > Mark Day wrote:

>
> [...]
>
> > > @array = qq(1 2 3 4 5 6 7 8 9 10 11 12 baker's dozen);

> >
> > Your problem is that you're using qq which will surround the contents of
> > the parenthesis with double quotes rather than qw which will surround
> > each word in the parenthesis with double quotes.

>
> That is wrong. "qw()" treats the whole string as single quoted,
> then splits the result on whitespace.



Oh. Thanks

Graham

>
> Anno

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
brochure printing,online yearbook,printing,books printing,publishing elie Computer Support 2 11-27-2010 12:12 PM
brochure printing,online yearbook,printing,books printing,publishing elie Computer Support 0 08-21-2007 05:52 AM
brochure printing,online yearbook,printing,books printing,publishing elie Computer Support 0 08-21-2007 05:50 AM
brochure printing,online yearbook,printing,books printing,publishing elie Computer Support 0 08-21-2007 05:28 AM
brochure printing,online yearbook,printing,books printing,publishing elie Computer Support 0 08-18-2007 10:11 AM



Advertisments