gpt4 book ai didi

perl - Perl中的字符串连接涉及函数的输出等

转载 作者:行者123 更新时间:2023-12-02 01:05:34 25 4
gpt4 key购买 nike

以下代码不输出任何内容:

print (1 == 2)."a";

就像这样:

print qw< One Two Three > . "a";

但是这会输出一个雪人,后跟字母 a,正如预期的那样:

print chr(0x2603)."a";

由于缺乏更好的词(例如函数输出和 bool 比较的结果),是否有一种通用方法可以将一般“事物”与始终有效的字符串片段连接起来?因为 . 运算符似乎不太可靠。

最佳答案

由于 Perl 中列表和上下文的工作方式,这是预期的行为。

发生了什么

线路

print (1 == 2)."a";

解析如下:

( print( 1 == 2 ) . "a" )

1==2返回一个空字符串,不打印任何内容。 print的返回值然后将其本身与 a 连接起来并被丢弃。

如果您已开启use warnings (您应该始终这样做,以及 use strict )您会看到:

print (...) interpreted as function at -e line 1.
Useless use of concatenation (.) or string in void context at -e line 1.

线路

print qw< One Two Three > . "a";

事实上,打印字符串 Threea 。那是因为qw< One Two Three >相当于表达式 ( 'One', 'Two', 'Three' ) 。串联运算符.将该表达式放入标量上下文中,标量上下文中逗号运算符的行为是返回其右侧操作数。因此表达式简化为 Threea 。再说一次,如果你有 warnings上,你会看到:

Useless use of a constant ("One") in void context at -e line 1.
Useless use of a constant ("Two") in void context at -e line 1.

故事的寓意

use strict;
use warnings;

关于perl - Perl中的字符串连接涉及函数的输出等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22876199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com