在 Perl 中是否有通用的方法来比较数字和字符串?

发布于 2024-11-19 21:44:08 字数 122 浏览 1 评论 0原文

众所周知,数字的比较使用与字符串不同的运算符。 那么 Perl 中有没有一种通用的方法来比较数字和字符串呢? 在进行比较之前我应该​​始终检查该值是数字还是字符串吗? 我是 Perl 的新生。如果您有什么想法,请帮忙。 谢谢。

As everyone knows, the numeric's comparison uses different operators to string's.
So Is there a generic way to do comparison both numeric and string in Perl ?
Should I always check the value is numeric or string before doing the comparison?
I am a freshman in Perl. Please help if you have some idea.
Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

叹梦 2024-11-26 21:44:11

如有疑问,请使用 eq。它也适用于数字。当你想要计算某些东西时,你只需要进行数字运算。

Perl 会在需要时将数字转换为字符串,反之亦然,但是,并非所有字符串都可以用数字表示,因此您会收到警告和零值(当我们这样做时:始终 使用严格;使用警告;)。

When in doubt, use eq. It works for numbers as well. You only need numeric operations when you want to count something.

Perl will convert numbers to strings and vice-versa when needed, however, not all strings can be represented by numbers, so you'll get a warning and a zero value (while we are at it: always use strict; and use warnings; ).

泅渡 2024-11-26 21:44:10

嗯,通常您知道特定变量在特定时间点保存什么样的数据。您能详细解释一下您正在考虑哪些您不会考虑的情况吗?

有些模块是针对诸如可能具有多个字符串/数字部分的复杂版本号之类的内容而定制的。 Sort::Naturally 就是其中之一。

Well, usually you know what kind of data a particular variable holds at a particular point in time. Can you explain more what case you are thinking of where you wouldn't?

There are modules tailored to things like complex version numbers that may have multiple string/numeric parts. Sort::Naturally is one.

人心善变 2024-11-26 21:44:10

当您想要比较数字时应该使用数字比较,当您想要比较字符串时应该使用字符串比较。这就是全部内容了。你可能想多了。

如果您确实需要测试字符串和数字相等性,只需测试两者:

if ( ( $foo eq $bar ) && ( $foo == $bar ) )

You should use numeric comparison when you want to compare numbers and string comparison when you want to compare strings. That's really all there is to it. You're probably overthinking it.

If you really need to test for both string and numeric equality, just test for both:

if ( ( $foo eq $bar ) && ( $foo == $bar ) )
毁虫ゝ 2024-11-26 21:44:09

除了已经提到的方式之外,当使用 perl > 时, 5.10.1、可以使用智能匹配。具体请查看参考表中的第 29 .. 32 行。如果一个操作数看起来像数字,则使用数字比较,否则回退到字符串。

In addition to ways already mentioned, when using perl > 5.10.1, smart matching can be used. Specifically look at lines 29 .. 32 in the referenced table. If one operand look like a number, numeric comparison is used, otherwise fallback to string.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文