4

有人可以帮忙澄清一下吗?另外,请提及是否有“$|”的其他表示。

提前致谢。

4

4 回答 4

10

我所知道的没有实际区别;$|只存储一个布尔值(0 或 1),因此递增它永远不会导致除 1 之外的任何值。微微优化器可能会告诉您 ++ 更快。

另一方面,减少它就像一个切换,但我想不出在生产代码中这样做的任何充分理由:你想要它打开还是关闭。

于 2012-06-14T18:15:53.660 回答
3

$|是超级神奇的,所以$|++$| = 1;但是当你可以做你的意思时为什么要依赖魔法($| = 1;)?

于 2012-06-14T18:17:26.743 回答
2

$的价值| 从 0 开始,所以 $|++ 从 0 递增到 1 而 $| = 1 将其设置为 1。但是请注意,它的值永远不能通过递增或赋值设置为高于 1,例如 $| = 2 仍为 1。

于 2012-06-14T18:16:37.433 回答
1

$|您几乎肯定不想像现代代码那样摆弄低级细节。这要好得多,而且更明显可读性写成

use IO::Handle;
STDOUT->autoflush(1);
于 2012-06-15T10:16:28.713 回答