use strict; use warnings; open my $fh, ">", "tmp.csv" or die "Unable to open $! \n"; #read the file line by line and delimit with commas print join ",", map {s/(.*,.*)/"$1"/; $_} split /~/ while ; close $fh; __DATA__ col1~col2~col3~col4~col5 data11~data12~data13~data14~data15 data21~data22~data23~data24~data25 data31~data32~data33~data34~data35 data,data41~data42~data43~data44~data45 data51,data52,data,junk,specialchar,sometingdata53~data54~data55 #### col1,col2,col3,col4,col5 data11,data12,data13,data14,data15 data21,data22,data23,data24,data25 data31,data32,data33,data34,data35 "data,data41",data42,data43,data44,data45 "data51,data52,data,junk,specialchar,sometingdata53",data54,data55