为啥我的文件内容/用户输入不匹配? (缺少chomp规范)[重复]

Posted

技术标签:

【中文标题】为啥我的文件内容/用户输入不匹配? (缺少chomp规范)[重复]【英文标题】:Why does my file content/user input not match? (missing chomp canonical) [duplicate]为什么我的文件内容/用户输入不匹配? (缺少chomp规范)[重复] 【发布时间】:2014-10-23 16:16:26 【问题描述】:

我正在读取文件/STDIN 并查找特定值:

use strict;
use warnings;

my $find = 'def';    
while (<DATA>) 
    if ($_ eq $find) 
        print "Found: $_\n"; # Never reached!
    


__DATA__
abc
def
xyz

为什么条件永远不匹配?

【问题讨论】:

如果有人知道一个已经存在的一般性“忘记输入我的输入”问题,请随时将其标记为重复。 这类问题很难找到规范的重复问题。 OP 很少知道出了什么问题,所以他们的标题/问题当然不会提到 chomp 或 line 结尾。 【参考方案1】:

Data::Dumper 可用于更仔细地检查变量:

use Data::Dumper;
local $Data::Dumper::Useqq = 1;

print Dumper $_, $find;

输出,例如

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

您必须删除&lt;DATA&gt; 读入$_\n 字符。最简单的方法是 chomp 函数

use strict;
use warnings;

my $find = 'def';    
while (<DATA>) 
    chomp;
    if ($_ eq $find) 
        print "Found: $_\n"; # Never reached!
    


__DATA__
abc
def
xyz

【讨论】:

以上是关于为啥我的文件内容/用户输入不匹配? (缺少chomp规范)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥列表视图不显示用户输入的文本

为啥python说一个字符串与另一个字符串不匹配[重复]

当用户输入除整数以外的任何内容时,为啥我的程序会无限循环输出? C++ [重复]

显示来自用户输入的部分数组值匹配

为啥我的 Wix 安装程序中缺少我的 CustomTable?

为啥我的 foreach 循环与 users.json 文件中的键不匹配