diff --git a/bin/pt-archiver b/bin/pt-archiver index 0e67c076..c4031df7 100755 --- a/bin/pt-archiver +++ b/bin/pt-archiver @@ -7156,10 +7156,16 @@ sub escape { return join($fields_separated_by, map { s/([\t\n\\])/\\$1/g if defined $_; # Escape tabs etc - $_ = defined $_ ? $_ : '\N'; # NULL = \N + my $s = defined $_ ? $_ : '\N'; # NULL = \N # var & ~var will return 0 only for numbers - $_ =~ s/([^\\])"/$1\\"/g if ($_ !~ /^[0-9,.E]+$/ && $optionally_enclosed_by eq '"'); - $_ = $optionally_enclosed_by && $_ & ~$_ ? $optionally_enclosed_by."$_".$optionally_enclosed_by : $_; + if ($s !~ /^[0-9,.E]+$/ && $optionally_enclosed_by eq '"') { + $s =~ s/([^\\])"/$1\\"/g; + $s = $optionally_enclosed_by."$s".$optionally_enclosed_by; + } + # $_ =~ s/([^\\])"/$1\\"/g if ($_ !~ /^[0-9,.E]+$/ && $optionally_enclosed_by eq '"'); + # $_ = $optionally_enclosed_by && ($_ & ~$_) ? $optionally_enclosed_by."$_".$optionally_enclosed_by : $_; + chomp $s; + $s; } @$row); } diff --git a/t/pt-archiver/file.t b/t/pt-archiver/file.t index 310ed476..7a427db0 100644 --- a/t/pt-archiver/file.t +++ b/t/pt-archiver/file.t @@ -46,7 +46,6 @@ is($output, <