2011-10-03 91 views
1

我是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} ++; 
    } 
} 
+4

[perldoc -f split](http://perldoc.perl.org/functions/split.html) –

+0

我只是嘗試一下,很酷的perl開發環境! – realjin

+1

「我通過谷歌搜索」 - 這是你的錯誤。你最好在http://perldoc.perl.org/或http://metacpan.org/搜索Perl信息。 –

回答

7

它將當前行($_)分割爲空格。引用手冊:

如果省略了EXPR,則會拆分$ _字符串。如果PATTERN也被省略,則在空白處跳過(在跳過任何前導空格之後)。

+0

哦,我明白了!謝謝你的解釋! – realjin

3

perldoc

分裂的一般語法是:

split /PATTERN/,EXPR 

如果EXPR被省略,它將該$_字符串。

如果PATTERN也被省略,則在空白處跳過(在跳過任何前導空格之後)。任何匹配PATTERN的東西都被視爲分隔字段的分隔符。 (請注意,分隔符可能長於一個字符。)

由於在您的情況下,PATTERNEXPR都被省略。發生空白時出現$_的分割,並將分割的前四個分別分配給$q$dummy$d$v

+0

感謝您的詳盡解釋!似乎我對此很新。 – realjin

+0

...所以'split()'和'split('',$ _)一樣' – ikegami