【发布时间】:2015-03-04 02:32:30
【问题描述】:
对于字符串,我需要 Perl 的 auto-increment magic,但某些字符串(例如完全由数字组成的字符串)被解释为数字,而是执行正常递增。我将如何强制 Perl 将传递给 ++ 的值视为字符串?
【问题讨论】:
-
您能解释一下您期望由完全数字组成的字符串如何递增吗?这可能会有所帮助:stackoverflow.com/questions/3508362/… 您可能需要为此编写自己的“增量”函数。
-
例如,我希望
++(my $v = "0001")变成“0002”,而不仅仅是“2”。当然,这不仅限于完全由数字组成的字符串——例如,在++(my $a = "M2U0")之后,$a变为1而不是我想要的"M2U1"。 -
0001应该变为0002但我认为您的其他示例行不通。这是因为要使变量作为字符串递增,它必须 1. 匹配正则表达式/^[a-zA-Z]*[0-9]*\z/和 2. 只能在字符串上下文中使用。您链接到的文档中对此进行了解释。 -
刚刚测试过,
perl -e'my $var = "0001"; $var++; print $var'打印出0002。所以那部分有效。perl -e'my $var = "M2U0"; $var++; print $var'打印1因为它与正则表达式不匹配,并且正在数字上下文中处理。 -
嗯,我也试过了,对我来说也很好用,我一定是搞砸了。我没想过要好好看看正则表达式本身。看来自动增量魔法毕竟无法完成这项工作。
标签: perl