Tricky Parsing

Let's say...I have one line in a file that looks like this:

"CNM","BY","test,test","here is some text",""

I need to replace all the commas with pipes, BUT ONLY when the comma is adjacent to (right or left of) a quotation mark....  if the comma is NOT next to a quotation mark then it should leave it alone.

georgiaAsked:
Who is Participating?
 
amitpagarwalConnect With a Mentor Commented:

#!/usr/local/bin/perl

$line = "CNM\",\"BY\",\"test,test\",\"here is some text\",\""  ;


print $line ;
print "\n" ;
$line =~ s/(",|",)/\|/g ;
print $line ;

-thanks
0
 
maneshrCommented:
try this.............

===========test.pl
#!/usr/bin/perl

$var="\"CNM\",\"BY\",\"test,test\",\"here is some text\",\"\"";

print "Before ",$var,"\n";
$var=~ s/","/"\|"/g;  ## search for ,'s that are adjacent to (right or left of) a quotation mark & replace them with |'s
print "After ",$var,"\n";


0
 
ozoCommented:
perldoc -q delimit
0
 
ozoCommented:
The Accepted Answer prints:
CNM|"BY|"test,test|"here is some text|"
Is that what you wanted?
What would you want to do if you have one line in a file that looks like this:
$var='"CNM","BY","test,test","here is some text","", ",", "test,", ",test"'
0
All Courses

From novice to tech pro — start learning today.