【问题标题】:How to do an if statement in perl? [duplicate]如何在 perl 中执行 if 语句? [复制]
【发布时间】:2016-02-29 00:13:58
【问题描述】:

Perl 中的 if 语句有问题,我的 if 语句不起作用。我做错了什么,因为我正在使用严格和警告模块,但我的 if 语句仍然不起作用。

#!/usr/bin/env perl

use strict;
use warnings;


sub Granted
{
    print "\n\nAccess Granted\n\n";
}


sub Access
{
    print "\n\n\n\n";
    sleep 1;
    print "Enter your name: ";
    my $name = <STDIN>;
    sleep 1;

    if ("$name" eq "jake")
    {
        Granted
    }

}

Access 

【问题讨论】:

  • 没有理由使用"$name"。只需使用$name。但是在进行比较之前,您必须在 $name 末尾修剪换行符。
  • 虽然它像你写的那样有效(我猜是偶然的),但请像这样调用你的子例程:Granted();,即带有括号()和最后一个;; 可以在块中的最后一个语句之后被省略(就像你一样),但它很难看。
  • 如有疑问:use Data::Dumper; $Data::Dumper::Useqq=1; print Dumper $name;

标签: perl perl-module


【解决方案1】:

您误诊了问题。 if 很好,问题在于您要与输入进行比较的数据。

从文件句柄中读取时,会包含记录分隔符(默认为换行符)。

您正在比较 "jake\n""jake"

另见chomp

【讨论】:

    猜你喜欢
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 2019-05-06
    • 2010-11-12
    • 2011-08-20
    相关资源
    最近更新 更多