何时使用拆分|作为分隔符,它不会给我预期的输出。有什么解决方案吗?
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
预期产出:
印刷排除1213:sutrust.com,sutrust1.com,sutrust3.com 1321:line.com
答案 0 :(得分:6)
您没有使用|
字符作为分隔符,而是使用|
正则表达式作为分隔符。该模式总是匹配,因此结果是在每个字符之间分裂。逃离|
。
split(/\|/, $exclude_list)
答案 1 :(得分:2)
竖线字符是split的特殊字符,需要进行转义。
my @exclude_client = split(/\|/, $exclude_list);
答案 2 :(得分:1)
您需要使用反斜杠转义管道:\|
:
#!/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