. . . snip . . . shift @headings; print join(", ", map {qq("$_")} @headings), "\n"; # Extract the data while () { last if /-----/; my @fields = split /\s*%\s*/; shift @fields; for my $i (0 .. $#fields) { if ($fields[$i] =~ /[^-\+\.0-9]/) { # has non-numeric characters, so quote it $fields[$i] = qq("$fields[$i]"); } } print join(", ", @fields), "\n"; } . . . snip . . .