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