in reply to Extract data from CSV field.

G'day JobC,

Welcome to the Monastery.

I believe you can perform all the modifications with this transliteration:

y/, \n/ /s

Here's my test:

#!/usr/bin/env perl -l use strict; use warnings; my @data = ( q{"TRAY,HINGED,PLSTC,20 CAV #F32473"}, q{"BOX HSC,35-3/4X17-1/4 X 50-1/2 SIMULATOR TALL BOX"}, q{"PAD, FOAM, 24 X 24 X 1/4 #16193 + 112 SHEETS PER ROLL, ORDER IN FULL ROLLS"}, q{"PKG LIST,ASST ARM,RAD,300 #F37784"}, q{"PAD, TOP CAP RE17-30048 #F30121 + CORRUGATED ASSEMBLY, 22-7/8 X 21-1/8 X 4-3/4"} ); print 'Before:'; print for @data; print 'After:'; for (@data) { y/, \n/ /s; print; }

Output:

Before: "TRAY,HINGED,PLSTC,20 CAV #F32473" "BOX HSC,35-3/4X17-1/4 X 50-1/2 SIMULATOR TALL BOX" "PAD, FOAM, 24 X 24 X 1/4 #16193 + 112 SHEETS PER ROLL, ORDER IN FULL ROLLS" "PKG LIST,ASST ARM,RAD,300 #F37784" "PAD, TOP CAP RE17-30048 #F30121 + CORRUGATED ASSEMBLY, 22-7/8 X 21-1/8 X 4-3/4" After: "TRAY HINGED PLSTC 20 CAV #F32473" "BOX HSC 35-3/4X17-1/4 X 50-1/2 SIMULATOR TALL BOX" "PAD FOAM 24 X 24 X 1/4 #16193 112 SHEETS PER ROLL ORDER IN FULL ROLLS +" "PKG LIST ASST ARM RAD 300 #F37784" "PAD TOP CAP RE17-30048 #F30121 CORRUGATED ASSEMBLY 22-7/8 X 21-1/8 X +4-3/4"

I've made two assumptions:

See "perlop: Quote-Like Operators" for details of y///. Also note that y/// and tr/// are synonymous.

You'll probably find that y/// is faster than s/// (see "perlperf - Perl Performance and Optimization Techniques").

— Ken

Replies are listed 'Best First'.
Re^2: Extract data from CSV field.
by JobC (Acolyte) on Dec 09, 2015 at 17:36 UTC

    kcott, thanks for that answer. I'll read that document. As this script will probably need to handle much more than my test data I would like it to be efficient. Oh, and your assumptions were correct.