Hello, you need to normalize somehow your data before elaborating the results: infact you have at least 2 field of two separaated words and at least the value of the name of the keeper with a space (the code below is broken for a keeper named just 'Tarzan' as for one named 'Vladimir Ilyich Ulyanov').
You can practice splice to modify the fields outside the loop, considering just the first line. In the loop you'll join firstname+lastname to have a singular field for them.
After this sanitazing work, the game is simple. I leaved some helpfull debugging print statement commented, to see how splice works (i not use it so often...)
use strict; use warnings; my @fields = split /\s+/, <DATA>; # print "BEFORE: ",(join '|',@fields),"\n"; my $prem_et = $fields[7].' '.$fields[8]; splice @fields,7,2,$prem_et; my $nd_al = $fields[8].' '.$fields[9]; splice @fields,8,2,$nd_al; # print "AFTER: ",(join '|',@fields),"\n"; while (<DATA>){ chomp; my @entries = split /\s+/,$_; # look at @entries before joining the name # print +(join '|',@entries),"\n"; my $name_with_space = $entries[1].' '.$entries[2]; # see the doc for splice: we remove item 1,2 and replace t +he with a single # $name_with_space splice @entries,1,2,$name_with_space; # UPDATE for null age @entries = (@entries[0..4],'',@entries[5..$#entries]); # but since we learn 'splice' we can do with it too: # splice @entries,4,1,$entries[4],''; # look at entries after splice # print +(join '|',@entries),"\n"; # foreach index of entries we print both corresponding fie +ld and entry print map {"$fields[$_]\t$entries[$_]\n" } 0..$#entries; print "\n"; } __DATA__ Animal keepers M/F YEAR DOB AGE FSM PREM ET ND + AL EAL GIRAFFE JAMES LE M 9 10/12/2007 Y Y N N HIPPOS JACKIE LEAN F 6 11/12/2007 Y N Y Y ZEBRAS JAMES LEHERN M 3 12/12/2007 N N N Y LIONS AMIE CAHORT M 1 13/12/2012 Y Y Y N
with the output:
Animal GIRAFFE keepers JAMES LE M/F M YEAR 9 DOB 10/12/2007 AGE FSM Y PREM ET Y ND AL N EAL N Animal HIPPOS keepers JACKIE LEAN M/F F YEAR 6 DOB 11/12/2007 AGE FSM Y PREM ET N ND AL Y EAL Y Animal ZEBRAS keepers JAMES LEHERN M/F M YEAR 3 DOB 12/12/2007 AGE FSM N PREM ET N ND AL N EAL Y Animal LIONS keepers AMIE CAHORT M/F M YEAR 1 DOB 13/12/2012 AGE FSM Y PREM ET Y ND AL Y EAL N


HtH (animals too!)
L*
UPDATED: i've not noticed you also have the age value empty! i've corrected the above.
There are no rules, there are no thumbs..
Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.

In reply to Re: script to do a foreach on an array of strings outputting the title row and each string element vertically by Discipulus
in thread script to do a foreach on an array of strings outputting the title row and each string element vertically by john.tm

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.