我是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} ++;
}
}
答案 0 :(得分:8)
它将当前行($_
)拆分为空格。引用手册:
如果省略EXPR,则拆分$ _字符串。如果也省略了PATTERN,则在空格上拆分(跳过任何前导空格后)。
答案 1 :(得分:3)
来自perldoc:
拆分的一般语法是:
split /PATTERN/,EXPR
如果省略EXPR
,则会分割$_
字符串。
如果PATTERN
也被省略,则在空格上拆分(跳过任何前导空格后)。匹配PATTERN
的任何内容都被视为分隔字段的分隔符。 (请注意,分隔符可能长于一个字符。)
因为在您的情况下,省略了PATTERN
和EXPR
。在空格上发生$_
的拆分,并且前四个拆分分别分配到$q
,$dummy
,$d
和$v
。