在数组中搜索术语

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)

所以我知道一个事实,"苹果"这个词在列表中,当我搜索术语"苹果"时,它打印出它没有找到.请帮忙!!

TLP*_*TLP 5

你应该试试

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)