gpt4 book ai didi

perl - 为什么 '<' 和 'lt' 运算符在 Perl 中返回不同的结果?

转载 作者:行者123 更新时间:2023-12-01 06:58:49 26 4
gpt4 key购买 nike

我只是在学习 Perl 的比较运算符。我尝试了以下代码:-

$foo=291;
$bar=30;

if ($foo < $bar) {
print "$foo is less than $bar (first)\n";
}

if ($foo lt $bar) {
print "$foo is less than $bar (second)\n";
}

输出是291小于30(秒)。这是否意味着 lt 运算符总是将变量转换为字符串然后比较? Perl 制作的基本原理是什么 lt 运算符的行为与 不同< 运算符(operator)?

谢谢,

最佳答案

你的猜测是对的。字母运算符如 lt将变量作为字符串进行比较,而像 < 这样的符号变量将它们作为数字进行比较。您可以阅读 perlop man page更多细节。

基本原理是 Perl 中的标量没有类型化,因此如果不告诉它 Perl 将不知道如何比较两个变量。如果它确实猜到了,那么它有时会出错,这将导致不得不做诸如 ' ' + $a < ' ' + $b 之类的事情。强制字符串比较可能比 lt 差.

也就是说,这是一个可怕的陷阱,它可能会捕获每个 Perl 新手,并且在使用较少的 post-modern language 一段时间后回到 Perl 时仍然会捕获我。 .

关于perl - 为什么 '<' 和 'lt' 运算符在 Perl 中返回不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1109517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com