我是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;
}
}
答案 0 :(得分:7)
好的,有些事情:
use strict;
和use warnings;
。每一次。open(my $read_user_info_log,"<","info.log") or die "-E- Unable to open \"info.log\"\n";
$line has $user
没有任何意义。相反,您可以通过正则表达式检查每一行:if($line=~/$user/){...}
break
是last
。chomp
文件的行删除行字符的尾端:chomp(my @content=<$read_user_info_log>);
老实说,我建议你阅读({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;
}
}