-1

很抱歉这个微不足道的问题,但在这里。我有一个文件要解析。它以一些空格开头,然后是第一个字段,然后是更多空格,另一个字段等。

例如:

000123 KST B4765 

我将其拆分如下:

my @fields = split /\s+/;

它在拆分时可以正常工作,但有一个例外:$fields[0]123并且我想保持原样"000123"- 一个纯字符串。

这是完整的部分:

open UU, "<$file", or die;
while (<UU>) {
  chomp;
  next if /^\#/;
  my @fields = split/\s+/;
  my $pno = 'EQ'."$fields[1]";
  print "$pno\n";
}
4

1 回答 1

3

不,000123将存储为字符串。但是,如果您不小心将其转换为数字,您可能会将其视为数字。例如

my @fields = split ' ', "000123 KST B4765";
print $fields[0];   # prints 000123
$fields[0] += 0;    # converts string to number
print $fields[0];   # prints 123

另请注意, using/\s+/类似于使用默认值' ',因为它在空格上拆分,除了它不会去除前导空格,这可能是也可能不是您想要的。

于 2012-12-30T11:47:18.707 回答