gpt4 book ai didi

Perl子优化使用split将字符串插入csv

转载 作者:行者123 更新时间:2023-12-04 18:16:07 25 4
gpt4 key购买 nike

我想优化这个 Perl 子:
push_csv($string,$addthis,$position);
用于将字符串放在 CSV 字符串中。

例如如果 $string="one,two,,four"; $addthis="three"; $position=2;然后 push_csv($string,$addthis,$position)将更改 $string = "one,two,three,four"; 的值

sub push_csv {

my @fields = split /,/, $_[0]; # split original string by commas;
$_[1] =~ s/,//g; # remove commas in $addthis
$fields[$_[2]] = $_[1]; # put the $addthis string into
# the array position $position.
$_[0] = join ",", @fields; # join the array with commas back
# into the string.
}

这是我的代码中的一个瓶颈,因为它需要被调用几百万次。

如果你精通 Perl,你能看一下它,并提出优化/替代方案吗?提前致谢! :)

编辑:
转换为 @fields 并返回到字符串需要时间,我只是想了一种方法来加快它,因为我连续有多个子调用。拆分一次,然后将多个事物插入数组,然后在最后加入一次。

最佳答案

出于多种原因,您应该使用 Text::CSV处理这些低级 CSV 细节。如果您能够安装 XS 版本,我的理解是它会比您在纯 Perl 中所做的任何事情都运行得更快。此外,该模块将正确处理您可能会错过的各种边缘情况。

use Text::CSV;
my $csv = Text::CSV->new;

my $line = 'foo,,fubb';
$csv->parse($line);

my @fields = $csv->fields;
$fields[1] = 'bar';

$csv->combine(@fields);
print $csv->string; # foo,bar,fubb

关于Perl子优化使用split将字符串插入csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3122010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com