在perl中没有参数的分裂

时间:2011-10-03 12:25:33

标签: perl

我是perl的新手,我想知道这行代码是什么意思?

($q,$dummy, $d,$v) = split;

我通过谷歌搜索,但是我没有找到使用拆分而没有参数的解释,这种用法是否与“while”块相关?

完整的代码片段是:

open(T,"$opt_judgments") ||  die "can't open judgment file: $opt_judgments\n";
while (<T>) {
  if ($opt_trec) {
    ($q,$dummy, $d,$v) = split;
  } else {
    ($q,$d,$v) = split;
  }
  $dict{$q ."=".$d} =$v;
  if ($v != 0) {
    $totalRels{$q} ++;
  }
}

2 个答案:

答案 0 :(得分:8)

它将当前行($_)拆分为空格。引用手册:

  

如果省略EXPR,则拆分$ _字符串。如果也省略了PATTERN,则在空格上拆分(跳过任何前导空格后)。

答案 1 :(得分:3)

来自perldoc

拆分的一般语法是:

split /PATTERN/,EXPR

如果省略EXPR,则会分割$_字符串。

如果PATTERN也被省略,则在空格上拆分(跳过任何前导空格后)。匹配PATTERN的任何内容都被视为分隔字段的分隔符。 (请注意,分隔符可能长于一个字符。)

因为在您的情况下,省略了PATTERNEXPR。在空格上发生$_的拆分,并且前四个拆分分别分配到$q$dummy$d$v