如何与' |'分开在perl

时间:2013-10-04 06:25:40

标签: perl

问题是它返回就像未定义值上的拆分一样

B
e
c
k
y
.

拆分字符串perl代码

sub start_thread {
my @args = @_;
print('Thread started: ', @args, "\n");
open(my $myhandle,'<',@args) or die "unable to open file";  # typical open call
my @aftersplit;
for (;;) {
    while (<$myhandle>) {
    chomp;
    @aftersplit = split('|',$_);
    #print $_."\n";
    foreach my $val (@aftersplit){
       print $val."\n";
        }
    }
    sleep 1;
    seek FH, 0, 1;      # this clears the eof flag on FH
}
}

它将字符串拆分为$ _并保存在数组aftersplit

3 个答案:

答案 0 :(得分:3)

你必须逃避|,因为它是正则表达式中的特殊字符,

my @aftersplit = split(/\|/, $_);

答案 1 :(得分:3)

您需要使用|

转义特殊字符\
@aftersplit = split('\|',$_);

答案 2 :(得分:2)

你需要逃避分隔符,因为它是一个特殊字符。

对于某些特殊字符,您需要在字符前加上文字\

my @aftersplit = split '\|', $_;

您也可以使用quotemeta

my $separator = quotemeta('|');
my @aftersplit = split /$separator/, $_;

或实现转义序列\Q

my @aftersplit = split /\Q|/, $_;