Perl将两个相同的字符串比较为不相等

Perl将两个相同的字符串比较为不相等,perl,string-comparison,Perl,String Comparison,这是我的密码: my $self = shift; my $h = shift; print "$h\n"; my @headers = split /,/, $h; foreach my $el (@{$expected}) { my $t = shift @headers; chomp ($t); chomp ($el); p

这是我的密码:

    my $self = shift;
    my $h    = shift;

    print "$h\n";

    my @headers = split /,/, $h;

    foreach my $el (@{$expected}) {
            my $t = shift @headers;
            chomp ($t);
            chomp ($el);
            print Dumper($el cmp $t, $el, $t);
            print "test: \'$el\' eq \'$t\' ";
            unless ($el eq $t) {
                    print "not ok $el ne $t\n";
                    return 0;
            } else {
                    print "ok\n";
            }
    }
    return 1;
在我的第一个单元测试中,我向$h传递了一个字符串,该字符串与$expected匹配。 然后,我进行了一个单元测试,确保在传递一个不匹配的字符串时函数失败。这两个测试按预期进行

服务器、Jira项目、问题类型、摘要、描述、受让人、标签、Epic链接

$VAR1=0

$VAR2='Server'

$VAR3='Server'

测试:“服务器”eq“服务器”正常

当我从CSV文件中提取行并将其传递给此函数时,我会得到不同的响应

服务器、Jira项目、问题类型、摘要、描述、受让人、标签、Epic链接

$VAR1=-1

$VAR2='Server'

$VAR3='Server'

测试:“服务器”eq“服务器”不正常服务器网元服务器

比较在某种程度上意味着期望值比测试值要小。我立刻想到,在测试的内容上,必须有一个前导或尾随字符。然而,打印和转储似乎并不能证实这一点(除非我遗漏了什么)。这些大杂烩完全是出于绝望


我遗漏了什么?

首先感谢@hobbs提供$Data::Dumper::Useqq=1;建议。很明显,有一些主角我不知道如何去发现

$VAR1=-1

$VAR2=“服务器”

$VAR3=“\357\273\277Server”

我正在读取的CSV文件包含信息


我要把它们脱掉。谢谢大家让我再次出发。

你能设置
$Data::Dumper::Useqq=1Dumper
之前,在代码中添加code>,并提供更新的输出?很可能在从CSV读取的某些数据末尾有换行符(CR和/或LF)。在这种情况下,去掉最后一项末尾的所有空格。@hobbs,很好的建议!我有一些前导字符在那里…如果您使用读取CSV数据(强烈建议),它将自动处理在标题行开始的BOM。