perl 如何使用拆分字符串|(管道)作为分隔符?

eqqqjvef  于 2023-06-06  发布在  Perl
关注(0)|答案(3)|浏览(427)

当我使用以|作为分隔符的split时,它没有给予预期的输出。有什么解决办法吗?

use warnings;
my $exclude_list = "1213:sutrust.com,sutrust1.com,sutrust3.com|1321:line.com";
my @exclude_client = split(/|/, $exclude_list);
print "Printing excluse  @exclude_client \n";

输出:

Printing excluse  1 2 1 3 : s u n t r u s t . c o m , s u t r u s t 1 . c o m , s u t r u s t 3 . c o m                                              | 1 3 2 1 : l i n e . c o m

预期输出:

Printing excluse 1213:sutrust.com,sutrust1.com,sutrust3.com 1321:line.com
q7solyqu

q7solyqu1#

您没有使用|字符作为分隔符,而是使用了|正则表达式作为分隔符。该模式始终匹配,因此结果是在每个字符之间拆分。退出|

split(/\|/, $exclude_list)
jm2pwxwz

jm2pwxwz2#

管道字符是split的特殊字符,需要转义。

my @exclude_client = split(/\|/, $exclude_list);
z9ju0rcb

z9ju0rcb3#

您需要使用反斜杠转义管道:\|

#!/usr/bin/perl -w
use strict; 

my $exclude_list = "1213:sutrust.com,sutrust1.com,sutrust3.com|1321:line.com";
my @exclude_client = split(/\|/, $exclude_list);

foreach(@exclude_client){
    print "Printing exclude $_ ";
}

输出:

1213:sutrust.com,sutrust1.com,sutrust3.com 1321:line.com

相关问题