Issue with goto statement along with if else condition

1 perl

我正在尝试为平等检查和转到标签概念创建一个简单的 perl 分配。
用户输入数字,进行相等检查,询问用户是否要检查更多,如果是,则重复,否则退出。对此
问题使用“goto” - y/n 检查是否重复,y 用于重复标签。即使我输入“n”,它也会继续转到标签 Loop 。为什么包含“goto”的“if”条件没有得到尊重?下面的代码

#Checking Equality

Loop: print "\Checking Equality\n";
print "Enter number for variable a\n";
$a = <stdin>;
print "Enter number for variable b\n";
$b = <stdin>;
if ( $a == $b ) {
    print 'a and b are equal';
    print "\n\n";
}
else {
    print 'a and b are not equal';
}
print "\n\n";
print "do you want to check more? Enter y/n\n";
$c = <stdin>;
if ( $c == "y" ) {
    goto Loop;
}
elsif ( $c == "n" ) {
    print "Exiting\n";
}
Run Code Online (Sandbox Code Playgroud)

输出-

Checking Equality
Enter number for variable a
3
Enter number for variable b
4
a and b are not equal

do you want to check more? Enter y/n
n         
Checking Equality   #### despite of entering n goto Loop is getting executed
Enter number for variable a
Run Code Online (Sandbox Code Playgroud)

Pra*_*eep 5

只需使用chomp函数删除换行符,并使用eq比较字符串。

use strict;
use warnings;

Loop: print "\nChecking Equality\n";
print "Enter number for variable a\n";
my $a = <stdin>;
print "Enter number for variable b\n";
my $b = <stdin>;
if ( $a == $b ) {
    print 'a and b are equal';
    print "\n\n";
}
else {
    print 'a and b are not equal';
}
print "\n\n";
print "do you want to check more? Enter y/n\n";

chomp(my $c = <stdin>);

if ( $c eq "y" ) {
    goto Loop;
}
else {
    print "Exiting\n";
}
Run Code Online (Sandbox Code Playgroud)