在perl中没有参数的分裂

rea*_*jin 2 perl

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

($q,$dummy, $d,$v) = split;
Run Code Online (Sandbox Code Playgroud)

我搜索谷歌,但我没有找到使用拆分没有参数的解释,这种用途是否与"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} ++;
  }
}
Run Code Online (Sandbox Code Playgroud)

jpa*_*cek 8

$_在空格上拆分当前行().引用手册:

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


cod*_*ict 5

来自perldoc

split 的一般语法是:

split /PATTERN/,EXPR
Run Code Online (Sandbox Code Playgroud)

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

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

因为在你的情况下, 和 都PATTERNEXPR省略了。发生对空白的分割$_,分割的前四块分别分配给$q$dummy$d$v