да есть конечно, но может у ТС чисто конкретно такая задача и ни грамма больше
да и модуль ставить надо, а иногда такой возможности нетхотя он небольшой конечно и других модулей за собой не тянет
ну что ж, извольте ))
чисто на входную строку
#!/usr/bin/perl
use strict;
use warnings;
use Text::CSV;
my $str = shift;
my $csv = Text::CSV->new({allow_loose_quotes=>1});
$csv->parse($str);
my @a = $csv->fields();
print join ";", @a;
проверяем
./test.pl '`data1,data.2,"34,56\",33"'
`data1;data.2;34,56\;33"
чисто на файл /tmp/file
data1,data2,"34,56"
data1,data2,34.56
'data1,data.2,"34,56\",33"
#!/usr/bin/perl
use strict;
use warnings;
use Text::CSV;
my @b;
my $file = "/tmp/file";
open my $fh, "<", $file or die "$file: $!";
my $csv = Text::CSV->new({allow_loose_quotes=>1});
while (my $row = $csv->getline($fh)) {
my @a = join ";", @$row;
push @b, "@a\n";
}
close $fh;
print @b;
результат
data1;data2;34,56
data1;data2;34.56
'data1;data.2;34,56\;33"
не согласен, что у Андрейки, как говоришь, грабли
awk'ом, sed'ом, grep'ом он владеет виртуозно, мастер меча
говорят, что талант не пропьешь и в землю не закопаешь
я с последним согласен, а насчет первого не уверен ))
но это уже оффтоп