如何修剪&x27';和';|';在使用PERL的单个命令中?

如何修剪&x27';和';|';在使用PERL的单个命令中?,perl,trim,Perl,Trim,我有这样一个字符串$data=。|abc | bcd | cde | 我需要这样的字符串:abc | bcd | cde 因此,我: $data=~s/\\124;$/#将最后一个“|”修剪掉。。。 $data=~s/^\.|+///gm#开始时修剪“.” $data=~s/^\|/#修剪开头的“|” 但我面临的问题是,脚本执行时间太长。有没有办法用一个命令完成整个操作 (也尝试了chop($data),但只取出最后一个|) 请建议 $data =~ s/(^[.|]*)|([.|]*$)//g

我有这样一个字符串
$data=。|abc | bcd | cde |

我需要这样的字符串:
abc | bcd | cde

因此,我:

$data=~s/\\124;$/#将最后一个“|”修剪掉。。。
$data=~s/^\.|+///gm#开始时修剪“.”
$data=~s/^\|/#修剪开头的“|”

但我面临的问题是,脚本执行时间太长。有没有办法用一个命令完成整个操作

(也尝试了
chop($data)
,但只取出最后一个
|

请建议

$data =~ s/(^[.|]*)|([.|]*$)//g;
也就是说,我不认为这会显著加快脚本的速度


话虽如此,我并不认为这会显著加快脚本的速度。

另一种方式:
$data=~s/^\.\\\\\\\\\\\\\\\\\\\\\\\\\\\/$1/


但正如Rene所说,您的速度瓶颈可能在脚本中的其他地方。

另一种方式:
$data=~s/^\.\\\\\\\\\\\\\\\\\\\\\\/$1/


但是正如Rene所说,你的速度瓶颈可能在你的脚本中的其他地方。

是否
$data
总是以
开始,然后以
结束?
$data
是否总是以
开始,最后以
结束?尝试过这个方法,但结果是这样的:
\abc>bcd | cde
。。。“.”和最后一个“|”已经消失,但“.”之后的“|”仍然存在@ReneI已经编辑了我的答案,您可能已经尝试了我的旧版本(我忘记了第一个
*
)。但是您是对的,这与速度没有多大关系。但是,当我不修剪字符串时,脚本速度非常快,但开头的“|”也会提供所有不需要的数据(我将此字符串用于egrep命令)。@user3446683:调用外部命令速度很慢。用一种语言实现所有东西往往会更快。如果你的脚本速度慢,可能不是因为这种替换!尝试了这个,但结果如下:
|abc | bcd | cde
。。。“.”和最后一个“|”已经消失,但“.”之后的“|”仍然存在@ReneI已经编辑了我的答案,您可能已经尝试了我的旧版本(我忘记了第一个
*
)。但是您是对的,这与速度没有多大关系。但是,当我不修剪字符串时,脚本速度非常快,但开头的“|”也会提供所有不需要的数据(我将此字符串用于egrep命令)。@user3446683:调用外部命令速度很慢。用一种语言实现所有东西往往会更快。如果你的脚本速度慢,可能不是因为这种替换!