use*_*814 1 arrays perl search grep parsing
我正在解析一个非常简单的文本文件并将其操作为一个数组.在我的程序的最后一步,我试图搜索用户给定的术语.我已经尝试了很多东西,但似乎无法让它工作,我搜索一个我知道的事实是在数组中它仍然没有找到它.我有一种预感,在"拆分","切断"和"排序"功能期间,变量可能会被修改,但我不完全确定.
print "\n";
print "Enter a term you would like to search for: \n";
my $element = <STDIN>;
$num = grep(/$element/,@final);
if($num > 0){
print ("Term: " . $element . " found " . $num . " times. \n");
}else{
print "Not found. \n";
}
Run Code Online (Sandbox Code Playgroud)
所以我知道一个事实,"苹果"这个词在列表中,当我搜索术语"苹果"时,它打印出它没有找到.请帮忙!!
你应该试试
chomp(my $element = <STDIN>);
Run Code Online (Sandbox Code Playgroud)
因为您的标准输入会有一个尾随换行符,否则会在搜索中匹配.例如:
$element = "foo\n";
grep /$element/, "foo bar"; # will not match
Run Code Online (Sandbox Code Playgroud)
您还应该知道元字符将在您的输入中进行解释.因此,例如,foo?将被视为"后跟可选的o".为避免这种情况,你可以使用quotemeta或者\Q ... \E,例如在正则表达式中使用:
/\Q$element\E/
Run Code Online (Sandbox Code Playgroud)