1

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

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
}
}

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

4

3 回答 3

3

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

my @aftersplit = split(/\|/, $_);
于 2013-10-04T06:28:05.033 回答
3

您需要使用转义特殊|字符\

@aftersplit = split('\|',$_);
于 2013-10-04T06:28:06.170 回答
2

您需要转义分隔符,因为它是一个特殊字符。

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

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

您也可以使用quotemeta

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

或者实现转义序列\Q

my @aftersplit = split /\Q|/, $_;
于 2013-10-04T06:45:43.640 回答