in reply to Re: Re: Re: efficient Array printing to a file
in thread efficient Array printing to a file

Hi again, What am i doing wrong here?? print FILE join(" ", map { sprintf "%7d", $_ } @x);
  • Comment on Re: Re: Re: Re: efficient Array printing to a file

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: efficient Array printing to a file
by Somni (Friar) on May 29, 2004 at 02:05 UTC

    The code is syntactically correct. What are you expecting? What do you get? Recall I mentioned it doesn't print a newline, are you expecting it to?

      Hi there I am not expecting it to print a new line. if thie were an array @x = 123456 I want the output to a file to look like this (without a newline.) 1 2 3 4 5 6

        If you mean @x = (1,2,3,4,5,6) then you have what you want.

        @x = (1,2,3,4,5,6); print STDOUT join(" ", map { sprintf "%7d", $_ } @x), "\n"; #outputs: 1 2 3 4 5 6

        Note, in this and further examples I am using STDOUT as a stand-in for your FILE filehandle. This is simply to make testing easier.

        If you really did mean @x = (123456); then you will have to split the elements of @x in a seperate step.

        @x = (123456); print STDOUT join(" ", map { sprintf "%7d", $_ } map { split //, $_ } +@x), "\n"; #outputs: 1 2 3 4 5 6

        Perhaps your confusion lines in the density of the code. Here is the original expanded a bit:

        my @x = (1,2,3,4,5,6); my @new; foreach my $x (@x) { push(@new, sprintf("%7d", $x)); } print STDOUT join(" ", @new), "\n"; #outputs: 1 2 3 4 5 6

        I'll leave it to you to expand the @x = (123456) code.