# Define the format of the file my (@file_format) = ( 0, 3, 53, 60, 67, 74, # etc. 241+169, # Last position, presumably ); #### my (@field_data); for (my $i = 0; $i < $#file_format; $i++) { $field_data[$i] = substr($_, $file_format[$i], $file_format[$i+1]- $file_format[$i]); # Clean up as required, by trimming $field_data[$i] =~ s/\s+$//; } print OUT_FILE join('|', @field_data);