Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 为什么这个if/else总是正确的?_Perl - Fatal编程技术网

Perl 为什么这个if/else总是正确的?

Perl 为什么这个if/else总是正确的?,perl,Perl,无论输入的颜色是什么,它都返回“绿色”:( 在Perl中,=表示其中eq是字符串等价。只需将这些=翻转到eq即可进行正确的比较 “红色”和“绿色”在数值上都等于零,因此通过数值比较,这里认为它们是相同的 编写这样的代码时,无论如何都应该使用查找表,因为这基本上是一个简单的状态机: my %next_light = ( "red" => "green", "yellow" => "red", "green" => "yellow" ); sub next_traff

无论输入的颜色是什么,它都返回“绿色”:(


在Perl中,
=
表示其中
eq
是字符串等价。只需将这些
=
翻转到
eq
即可进行正确的比较

“红色”
“绿色”
在数值上都等于零,因此通过数值比较,这里认为它们是相同的

编写这样的代码时,无论如何都应该使用查找表,因为这基本上是一个简单的状态机:

my %next_light = (
  "red" => "green",
  "yellow" => "red",
  "green" => "yellow"
);

sub next_traffic_lights {
  return $next_light{$_[0]};
}

在Perl中,
=
表示其中
eq
是字符串等价。只需将这些
=
翻转到
eq
即可进行正确的比较

“红色”
“绿色”
在数值上都等于零,因此通过数值比较,这里认为它们是相同的

编写这样的代码时,无论如何都应该使用查找表,因为这基本上是一个简单的状态机:

my %next_light = (
  "red" => "green",
  "yellow" => "red",
  "green" => "yellow"
);

sub next_traffic_lights {
  return $next_light{$_[0]};
}

如果您使用了
使用严格;使用警告;
,Perl会告诉您。如果您使用
使用严格;使用警告;
,Perl会告诉您。非常感谢,谢谢:)轶事:在德国,事情要复杂得多。交通灯变“红”→ “红色和黄色”→ “绿色”→ “黄色”→ “红色”。非常感谢:)轶事:在德国,事情要复杂得多。交通灯变“红”→ “红色和黄色”→ “绿色”→ “黄色”→ “红色”。