in reply to Create a table from a matrix

Try This
while(<DATA>) { my ($pid,$vid,$sid) = split(/\|/,$_); $pid =~ s/\s*//g; $vid =~ s/\s*//g; $sid =~ s/\s*//g; $hs{$vid}{$pid}="s_".$sid, if($vid =~ /\d/); } print" | p_1 | p_2 | p_3 | p_4 \n"; print "----------------------------------\n"; for $fst (1..5) { print "v_$fst"; printf(" | %4s", $hs{$fst}{$_}), foreach (1..4); print "\n"; print "----------------------------------\n"; } __DATA__ p_id | v_id | s_id 1 | 1 | 1 2 | 1 | 2 3 | 1 | 3 4 | 1 | 4 1 | 2 | 5 2 | 2 | 6 3 | 2 | 7 4 | 2 | 8 2 | 3 | 9 4 | 3 | 10 1 | 4 | 11 2 | 4 | 12 4 | 4 | 13 3 | 5 | 14
Rds/Praveen