Соответствие Perl возвращает только «1». Булевы? Почему?

Это должно быть очевидно, но я просто этого не вижу.

У меня есть документы, содержащие тысячи записей, как показано ниже:

Row:1 DATA:
[0]37755442
[1]DDG00000010
[2]FALLS
[3]IMAGE
[4]Defect
[5]3
[6]CLOSED

Мне удалось разделить каждую запись, и теперь я пытаюсь разобрать каждое поле.

Я пытаюсь сопоставить пронумерованные заголовки, чтобы я мог извлечь данные, которые следуют за ними, но проблема в том, что мои совпадения возвращают мне только «1», когда они успешны, и ничего, если нет. Это происходит с любым матчем, который я пытаюсь подать.

Например, применительно к простому слову в каждой записи:

my($foo) = $record=~ /Defect/;
print STDOUT $foo;

выводит «1» для каждой записи, если она содержит «Дефект», и ничего, если она содержит что-то еще.

В качестве альтернативы:

$record =~ /Defect/;
print STDOUT $1;

абсолютно ничего не печатает.

$record =~ s/Defect/Blefect/

, с другой стороны, прекрасно заменит «Дефект» на «Блефект».

Я действительно сбит с толку, почему мои матчи так мизерны. Любая помощь будет очень признательна.

6
задан ManAnimal 21 October 2011 в 21:45
поделиться