print、printf和say
print、printf和say都可以输出信息。print和say类似,print不自带换行符,say自带换行符,但要使用say,必须写use语句use 5.010;
,printf像C语言的printf一样,可以定制输出格式,不过我这perl似乎不支持printf,一用就报错,不知道为什么。它们有返回值:如果输出成功,就返回1。
注意perl中有上下文的概念,这几个输出操作也同样有上下文环境。
@arr=qw(hello world); print "hello world","\n"; # 列表上下文 print "hello world\n"; # 标量上下文 print @arr; # 输出helloworld(没空格) print "@arr"; # 输出hello world(有空格)
use 5.010; say "Hello World!"; # 自带换行符
这些本没有什么可解释的,但是print/say可以以函数格式(print(args)
/say(args)
)进行输出,这时候有个陷阱需要注意。
print(3+4)*4;
这个反返回7,而不是28。这是怎么计算的?
Perl中很多时候是可以省略括号的,这往往让我们忘记括号的归属。而Perl中又有上下文的概念,在不同上下文执行同一个操作的结果是不一样的。在这里:
所以,上面的语句等价于:
(print(3+4))*4
它先执行print(7)
,然后拿到print的返回值1,将其乘以4,由于没有赋值给其它变量,所以这个乘法的结果被丢弃。
如果将上面赋值给一个变量:
$num = print(3+4)*4;
则$num
的值将为4。
另外,由于print/say不使用括号的时候,它们会输出其后面的列表。所以有以下技巧:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。