xtr*_*eak 8 perl concatenation
我是一个Perl新手.我想用字符串连接一个字符串和一个数字.运算符和第一个参数将是一个数字.我可以使用join,sprintf并将它们打印为打印编号,字符串.但我试过了.操作员并得到以下
$foo = "hello".34 # Gives hello.34
$foo = 34."hello" # Gives an error
$foo = 34.34 # Gives 34.34
$foo = 34.34.34 # Gives """
$foo = "hello".34."hello" # Gives an error
Run Code Online (Sandbox Code Playgroud)
我在Perl调试器下尝试过它们.我的问题是为什么不将Perl连接数字和字符串与数字作为第一个参数,反之亦然.为什么34.34.34在Perl中给出""".
hob*_*bbs 10
时不时地,空白是重要的.34 . "hello"是"34hello".34."hello"是一个解析错误,因为它34.看起来像一个浮点数(可能34.5)的开头,然后解析器在得到一个"而不是另一个数字时不知道该怎么做.如果你在点运算符周围使用空格,你的代码看起来会更好,但是需要一个数字.
34.34.34是一个特殊的构造,称为版本字符串或"v-string",当您有一个包含多个点的数字时,可以选择前面带有一个v.它创建一个字符串,其中每个字符编号来自v字符串中的数字.所以34.34.34等于chr(34) . chr(34) . chr(34),既然chr(34)是双引号,那就是相同的'"""'.V字符串很有用,因为它们比较了预期版本号的方式.在数字上,5.10 < 5.9但作为版本,5.10.0 gt 5.9.0.
好问题.该.角色具有多重意义:
它是连接运算符
my $x = 34;
my $y = 34;
say $x.$y; # 3434
Run Code Online (Sandbox Code Playgroud)它是浮点数字文字中的小数分隔符:
3434 / 100 == 34.34
Run Code Online (Sandbox Code Playgroud)
请注意,小数分隔符必须紧跟在整数部分之后,或者它被解释为连接: 34 .34 == 3434
它是v-strings中的分隔符(其中"v"通常代表版本).在v-string中,每个字符用句点分隔,并且可选地以下列前缀v:
34.34.34 eq v34.34.34
Run Code Online (Sandbox Code Playgroud)
每个数字都被翻译成相应的字符,例如64.64.64 eq "@@@".
| 归档时间: |
|
| 查看次数: |
4690 次 |
| 最近记录: |