为什么存在 perl 字符串自动递增魔术行为?

Why does perl string auto-increment magic behavior exist?

在 perl 中,当满足各种特定条件时,字符串 "aa" 可以自动递增成为 "ab"。 PHP 具有类似的行为,并引用了 Perl,我认为这意味着早期使用的是 Perl。

为什么首先要将魔术行为添加到 Perl 中?

这里有一个示例讨论:Increment (++) and decrement (--) strings in Perl 其中指出 perl 文档没有给出基本原理。

这就是我的问题:创建字符串自动递增 "magic" 行为的最初理由是什么?

第二次编辑:这与自动生成无关。在研究我的基本原理问题的可能答案时,我误解了我正在阅读的内容。感谢 ThisSuitIsBlackNot 指出这一点,感谢 choroba 询问我的意思。

我完全同意该功能很有用,只要有合理的借口,我就会使用它,主要是作为唯一非数字 tags/keys 的生成器。我仍然想知道是否有它最初针对的特定理由或用例。我们可能永远不会知道!

也许可以让 split 的模拟变得简单?

我建议它就在那里 因为它很有用,而且它并不比简单的整数递增更神奇

我不知道真相,但我可以想象,在开发 Perl 时,程序员遇到了将 ++ 应用于仅包含一个标量变量时该怎么做的问题细绳。而且,有人认为最好实现字符串递增

,而不是引发异常

编程中的许多 事物 正是以这种方式排序的,有人——也许是 Larry——认为将这种功能构建到语言中是个好主意。这种设施在您需要它之前可能看起来一文不值,但在您需要它之后它就是无价之宝。您想自己编写代码并覆盖 ++ 运算符吗?

我发现它非常有用,而且我想我每年使用它多达十几次,都是出于不同的原因。我试图搜索我的软件存档,但很难通过字符串匹配找到它!

Why was the magic behavior added to Perl in the first place?

因为有用。至少,它可以用来创建非数字的唯一 ID。

The most likely explanation that I can find is to support autovivication.

一般来说,它与自动生成或引用之间没有任何关系。

That is, it's relatively common to auto-increment a generated hash key.

当然,如果使用字符串 ++ 创建唯一 ID,您可以使用哈希按 ID 查找。