perl检查文件内容并匹配用户名

时间:2012-03-05 05:46:49

标签: perl

我是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 个答案:

答案 0 :(得分:7)

好的,有些事情:

  1. 始终,始终始终 use strict;use warnings;。每一次。
  2. Bareword filehandles are bad。使用三个参数打开:
    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相当于breaklast
  5. 您可能还希望chomp文件的行删除行字符的尾端:
    chomp(my @content=<$read_user_info_log>);
  6. 老实说,我建议你阅读({3}}第六版(新发布)。

答案 1 :(得分:1)

我想您可能想要改变这一行:

 if($line has $user)

 if ($line =~ /$user/)

这样,正则表达式将在其中的任意位置搜索$user行。

答案 2 :(得分:0)

 $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;
             }
           }