问题是它返回就像未定义值上的拆分一样
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
中答案 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|/, $_;