在数字前加上转义字符 '\' 会产生垃圾值 Ex:
$a = \12;
print $a;
此代码给出以下输出
SCALAR(0x2001ea8)
当我再次执行程序时,输出会发生变化。
如果当用户给出以零开头的任何输入时我从用户那里获取一个值(数字),我不希望它被解释为八进制数。因此,如果数字以零开头,我想转义零。
[在评论中,OP 解释说他希望用户输入的数字被视为十进制,即使它们有前导零。]
在数字文字(产生数字的代码)中,前导零告诉 Perl 该数字是八进制的。
$ perl -E'say 045'
37
但这不适用于数字化(将字符串转换为数字)。
# "045" is the same as reading 045 from handle or @ARGV.
$ perl -E'say 0+"045"'
45
所以你不必做任何特别的事情。如果045
您将其用作数字,则用户输入意味着四十五(不是三十七)。
如果由于某种原因您确实需要摆脱前导零,您可以使用
$var =~ s/^0+(?!\z)//;
(?!\z)
确保"0"
不会""
变成.
在 Perl 中,\
是引用运算符。它类似于 C 的&
(address-of)