разделить без аргументов в Perl - PullRequest
2 голосов
/ 03 октября 2011

Я новичок в Perl, и мне интересно, что означает эта строка кода?

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

Я ищу в Google, но не нашел объяснения использования 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 ]

8 голосов
/ 03 октября 2011

Делит текущую строку ($_) на пробелы. Цитирование руководства:

Если EXPR опущен, разбивает строку $ _. Если PATTERN также пропущен, разделяется на пробел (после пропуска любого начального пробела).

3 голосов
/ 03 октября 2011

С perldoc :

Общий синтаксис split:

split /PATTERN/,EXPR

Если EXPR опущен, он разбивает строку $_.

Если PATTERN также опущен, разделяется на пробел (после пропуска любого начального пробела).Все, что соответствует PATTERN, считается разделителем полей.(Обратите внимание, что разделитель может быть длиннее одного символа.)

Поскольку в вашем случае оба значения PATTERN и EXPR опущены.Происходит разбиение $_ на пустое пространство, и первые четыре части разделения назначаются $q, $dummy, $d и $v соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...