with the output: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
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
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
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |