为什么我的文件内容/用户input不匹配? (缺lesschomp规范)

我正在读取一个文件/ STDIN并寻找一个特定的值:

 use strict; use warnings; my $find = 'def'; while (<DATA>) { if ($_ eq $find) { print "Found: $_\n"; # Never reached! } } __DATA__ abc def xyz 

为什么从来没有匹配的条件?

Data::Dumper可以用来更仔细地检查variables:

 use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper $_, $find; 

输出,例如

 $VAR1 = "def\n"; $VAR2 = "def"; 

您必须删除<DATA>读入$_\n字符。 最简单的方法就是chomp函数

 use strict; use warnings; my $find = 'def'; while (<DATA>) { chomp; if ($_ eq $find) { print "Found: $_\n"; # Never reached! } } __DATA__ abc def xyz