open(STDIN1, "; # What do you think you're doing here? # for (@row1[$done1]) # try foreach (@row) { # OUCH! Don't chop if you want to chomp! # chop(@row1); chomp; # And what do you think will this do? # foreach (@row1[$count1]) # { # @column1 = split(/\,/,@row1[$count1]); # $sat_name = @column1[0]; # $meas_name = @column1[1]; # $parent_meas = @column1[2]; # $start_bit_no = @column1[3]; ($sat_name, $meas_name, $parent_meas, $start_bit_no)= split /,/; print ("$sat_name;"); print ("$meas_name;"); &DESCRIPTION; # <---- What do these do? &DATA; # <--/ print ("$size_bits_no;"); &DATA1; # ??? print ("$monitor_type;"); print ("$parent_meas;"); &BIT; print ("$start_bit_no;"); &SUBSYSTEM; # ??? &BOX; # ??? print ("$lsb_proc_ind;"); print ("$blank"); print ("\n"); $count1++; # } $done1++; } close STDIN1; sub BIT #routine to sort numbers { # OUCH! You know what you do??? # if ($meas_name = $parent_meas) # I think you meant if ($meas_name == $parent_meas) { # I won't even try to imagine what this line WILL do # my @nums = $start_bit_no; # I think it SHOULD do push(@nums, $start_bit_no); # So pushing the start bit to a global array my @index= sort { $nums[$a-1] <=> $nums[$b-1] } 1..@nums; # Fortunately you mad the following line a comment by a typo ;-) #$index++; # But here OUCH again #print join "\n","@index;",''; # Are you sure you didn't mean: print join("\n",@index),"\n"; } } __END__ A1,BL1CHILDB0,BL1PARENTMON,0 A1,BL1CHILDB1,BL1PARENTMON,1 A1,BL1CHILDB2,BL1PARENTMON,2 A1,BL1CHILDB3,BL1PARENTMON,3 A1,BL1CHILDB4,BL1PARENTMON,4 A1,BL2CHILDB5,BL1PARENTMON,5 A1,BL2CHILDB6,BL1PARENTMON,6 A1,BL2CHILDB7,BL1PARENTMON,7 A1,BL2CHILDB3,BL2PARENTMON,1 A1,BL2CHILDB6,BL2PARENTMON,0 A1,D1CHILDB0,D1PARENTMON,0 A1,D2CHILDB1T3,D1PARENTMON,1 A1,D3CHILDB4T5,D1PARENTMON,4 A1,D4CHILDB6,D1PARENTMON,6 A1,D5CHILDB7,D1PARENTMON,7