Почему приведенный ниже код Perl показывает «Использование неинициализированного значения в конкатенации (.) Или строке», когда я пытаюсь использовать команду opendir - PullRequest
1 голос
/ 13 июня 2019

Я писал код для отображения всех файлов и подпапок в каталоге.opendir и readdir используются только для отображения файлов или могут отображать подкаталоги?

Ниже приведен код, который я использую, я не знаю, что мне следует попробовать вместо этого.

#!/apps/perl/5.8.9/bin/perl

use strict;
use warnings;

opendir DIR , "/home/x0280511/" || die;
while (readdir DIR) {
    print "$_\n";
}

Я получаю следующее сообщение об ошибке

Использование неинициализированного значения в конкатенации (.) Или в строке

Что именно означает указанное выше сообщение об ошибке?

1 Ответ

2 голосов
/ 13 июня 2019

Голое readdir допустимо только в выражении цикла while на Perl 5.12+. Если вы используете более раннюю версию Perl, вам потребуется другой синтаксис для принудительного скалярного контекста:

while (my $ent = readdir DIR) {
  print "$ent\n";
}

Или вы можете использовать readdir в контексте списка, просто обратите внимание, что он будет запрашивать все содержимое каталога перед отображением первой записи:

foreach my $ent (readdir DIR) {
  print "$ent\n";
}

Надеюсь, это поможет!

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