【问题标题】:Failing if statementif语句失败
【发布时间】:2018-02-02 17:28:03
【问题描述】:

好的,所以我有这行我无法弄清楚的代码,如果有人可以帮助我,那就太好了。我正在制作一个地理位置 perl 脚本作为我项目的一部分。

这是代码行

$isps = $info->{'isp'};

if ($isps = "Time Warner Cable")
 {

  print "Isp found, go to $website for more information\n";       
}

if ($isps = "Google") {

    print "Isp found, go to $website for more information\n";       
} else {

    print "No ISP located! No way of Contact via this terminal!";
}

好的,所以基本上我试图让 if 语句读取 JSON 代码,并在列出特定名称时让它打印某些文本。我正在向文件中添加更多的 ISP,但现在只是这两个。

如果有人可以帮助我处理这行代码,因为我真的想不通。

【问题讨论】:

  • 究竟是什么问题
  • 我认为 OP 正在显示某种伪代码,因此出于这个原因投票关闭,但这应该作为 How do I compare two strings in Perl? 的副本或作为拼写错误关闭。如果有人能想出一个像样的标题,那就太好了。这与 JSON 无关,但我想不出一个像样的描述性标题。
  • @SinanÜnür 我刚刚投票关闭,因为印刷错误,不可重现(等)
  • 欢迎来到 StackOverflow。请阅读How to Ask,并详细说明您的方法到底出了什么问题。
  • @SinanÜnür 我从标题中删除了“JSON”,至少现在是这样

标签: json perl


【解决方案1】:

= 是赋值运算符。您需要字符串比较运算符eq

在这一行中,您将字符串"Time Warner Cable" 分配给$isps 变量。然后if-conditional 看到字符串并将其解释为 true。下一个条件也一样。

if ($isps = "Time Warner Cable")

相反,你想要:

my $isps = $info->{'isp'};

if ($isps eq "Time Warner Cable") {
    print "Isp found, go to $website for more information\n";       
}
elsif ($isps eq "Google") {
    print "Isp found, go to $website for more information\n";       
} else {
    print "No ISP located! No way of Contact via this terminal!\n";
}

【讨论】:

  • 可能值得注意 - use strict; use warnings; 告诉你这个。 Found = in conditional, should be ==
【解决方案2】:

您应该更新您的问题,告诉我们您当前的代码出了什么问题。

一个主要问题是= 是赋值运算符。要比较字符串是否相等,请使用 eq 运算符:

if ($isps eq "Time Warner Cable") # ...

== 运算符执行数值比较。)

欲了解更多信息,perldoc perlop,可在线获取here

【讨论】:

  • 哇,我觉得自己很笨。 Kinda 知道 perl 自己。我没想到会这么容易。太感谢了!我会从我的错误中吸取教训。
猜你喜欢
  • 2019-01-26
  • 2021-10-17
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-26
  • 2013-02-28
相关资源
最近更新 更多