On 15/12/2011 15:47, Chris Stinemetz wrote:
>
> I'm getting a bit closer. There a couple roadblocks I am up against.
>
> I am able to split the lines by white space, but for some reason the
> program isn't capturing the first lines to the @fieldValue array after
> the @headerNames array.
>
> Once I get all the lines to go into the array correctly I would like
> to combine the @headerNames and @fieldValue arrays. The way I am doing
> it now only appends the later.
>
> I would like the combination to be the below for each elements in the
> two arrays.
>
> any help is greatly appreciated,
>
> Chris
>
> csno=1
> rfpi=1
> header_1=5.5
> header_2=5.5
> header_3=5.5
> header_4=5.5
> header_5=5.5
> header_6=5.5
> header_7=5.5
> header_8=5.5
> header_9=5.5
>
>
>
> #!/usr/bin/perl
> use warnings;
> use strict;
> use Data::Dumper;
>
> my $header;
> my @headerNames;
> my $field;
> my @fieldValue;
> my @apxScript;
>
> while (my $line =<DATA>) {
>    if($line =~ m|(.*_.*\n)|){
>    $header = $1;
>    @headerNames = split(" ",$header);
>    }
>
>    if($line !~ m|.*_.*\n|){
>    @fieldValue = split(" ",$line);
>    print "$fieldValue[0]\n";
>    }
> }
>
> my @apxScript=(@headerNames, @fieldValue);
> print Dumper \@headerNames;
> print Dumper \@fieldValue;
> print Dumper \@apxScript;
>
>
> __DATA__
> csno  rfpi  header_1  header_2  header_3  header_4  header_5  header_6
>   header_7  header_8  header_9
> 1 1 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
> 2 2 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
> 3 3 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
> 4 1 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
> 5 2 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
> 6 3 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
> 7 1 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
> 8 2 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
> 9 3 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
> 10  1 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
> 11  2 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
> 12  3 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5

Hey Chris

Your program reads lines from DATA and splits every line that doesn't
contain an underscore into @fieldValue. Every line of data overwrites
the contents of the array, so the end result is that @fieldValue holds
the data from the last line of data.

What are you hoping for? If you want to retain the /first/ line of data
instead of the last then you need only to add a 'last' statement after
the '@fieldValue = split(" ",$line)' on line 19.

However I think it's more likely that you need /all/ of the data to be
output, so I suggest something like my program below.

HTH,

Rob


use strict;
use warnings;

my @headers;

while (<DATA>) {
  if (@headers) {
    my @data = split;
    for my $i (0 .. $#headers) {
      printf "%s=%s\n", $headers[$i], $data[$i];
    }
  }
  else {
    @headers = split;
  }
}


__DATA__
csno  rfpi  header_1  header_2  header_3  header_4  header_5  header_6 header_7 
 header_8  header_9
1 1 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
2 2 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
3 3 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
4 1 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
5 2 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
6 3 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
7 1 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
8 2 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
9 3 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
10  1 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
11  2 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5
12  3 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5 5.5

**OUTPUT**

csno=1
rfpi=1
header_1=5.5
header_2=5.5
header_3=5.5
header_4=5.5
header_5=5.5
header_6=5.5
header_7=5.5
header_8=5.5
header_9=5.5
csno=2
rfpi=2
header_1=5.5
header_2=5.5
header_3=5.5
header_4=5.5
header_5=5.5
header_6=5.5
header_7=5.5
header_8=5.5
header_9=5.5
csno=3
rfpi=3
header_1=5.5
header_2=5.5
header_3=5.5
header_4=5.5
header_5=5.5
header_6=5.5
header_7=5.5
header_8=5.5
header_9=5.5
csno=4
rfpi=1
header_1=5.5
header_2=5.5
header_3=5.5
header_4=5.5
header_5=5.5
header_6=5.5
header_7=5.5
header_8=5.5
header_9=5.5
csno=5
rfpi=2
header_1=5.5
header_2=5.5
header_3=5.5
header_4=5.5
header_5=5.5
header_6=5.5
header_7=5.5
header_8=5.5
header_9=5.5
csno=6
rfpi=3
header_1=5.5
header_2=5.5
header_3=5.5
header_4=5.5
header_5=5.5
header_6=5.5
header_7=5.5
header_8=5.5
header_9=5.5
csno=7
rfpi=1
header_1=5.5
header_2=5.5
header_3=5.5
header_4=5.5
header_5=5.5
header_6=5.5
header_7=5.5
header_8=5.5
header_9=5.5
csno=8
rfpi=2
header_1=5.5
header_2=5.5
header_3=5.5
header_4=5.5
header_5=5.5
header_6=5.5
header_7=5.5
header_8=5.5
header_9=5.5
csno=9
rfpi=3
header_1=5.5
header_2=5.5
header_3=5.5
header_4=5.5
header_5=5.5
header_6=5.5
header_7=5.5
header_8=5.5
header_9=5.5
csno=10
rfpi=1
header_1=5.5
header_2=5.5
header_3=5.5
header_4=5.5
header_5=5.5
header_6=5.5
header_7=5.5
header_8=5.5
header_9=5.5
csno=11
rfpi=2
header_1=5.5
header_2=5.5
header_3=5.5
header_4=5.5
header_5=5.5
header_6=5.5
header_7=5.5
header_8=5.5
header_9=5.5
csno=12
rfpi=3
header_1=5.5
header_2=5.5
header_3=5.5
header_4=5.5
header_5=5.5
header_6=5.5
header_7=5.5
header_8=5.5
header_9=5.5

Tool completed successfully





-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to