Perl проверяет содержимое файла и соответствует имени пользователя - PullRequest
1 голос
/ 05 марта 2012

Я новичок в программировании на Perl.У меня есть сценарий, где имя пользователя вводится в файл, скажем, info.log.Итак, теперь я хочу проверить, присутствует ли это имя пользователя в содержимом файла или нет

 $user = $ENV{USER};
 open (READ_USER_INFO_LOG, "info.log") || die("-E- Unable to open \"info.log\n");
          @content = <READ_USER_INFO_LOG>;
          close READ_USER_INFO_LOG;
          foreach $line(@content)
          {
             if($line has $user)
             {
                  print "Usenrmae found";
                   break;
             }
           }

Ответы [ 3 ]

7 голосов
/ 05 марта 2012

Хорошо, несколько вещей:

  1. Всегда, всегда, всегда use strict; и use warnings;. Каждый раз.
  2. Недостоверные дескрипторы файловых слов . Используйте три открытых аргумента:
    open(my $read_user_info_log,"<","info.log") or die "-E- Unable to open \"info.log\"\n";
  3. $line has $user ничего не значит. Вместо этого вы можете проверить каждую строку с помощью регулярного выражения: if($line=~/$user/){...}
  4. Эквивалент Perl break равен last.
  5. Вы также можете chomp строк вашего файла, чтобы удалить символы конца строки:
    chomp(my @content=<$read_user_info_log>);

Честно говоря, я бы рекомендовал прочитать (недавно выпущенное) шестое издание Learning Perl .

1 голос
/ 05 марта 2012

Я думаю, вы можете изменить строку:

 if($line has $user)

до

 if ($line =~ /$user/)

Таким образом, регулярное выражение будет искать строку для $user в любом месте внутри нее.

0 голосов
/ 05 марта 2012
 $user = $ENV{USER};
 open (READ_USER_INFO_LOG, "info.log") || die("-E- Unable to open \"info.log\n");
          @content = <READ_USER_INFO_LOG>;
          close READ_USER_INFO_LOG;
          foreach $line(@content)
          {
             if($line =~ /$user/)
             {
                  print "Usenrmae found";
                   break;
             }
           }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...