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不加括号的时候,它需求的参数是一个列表上下文,它后面的所有内容都会被print输出
  • print加括号的时候,它只会输出括号中的内容

所以,上面的语句等价于:

(print(3+4))*4

它先执行print(7),然后拿到print的返回值1,将其乘以4,由于没有赋值给其它变量,所以这个乘法的结果被丢弃。

如果将上面赋值给一个变量:

$num = print(3+4)*4;

$num的值将为4。

如果想要输出(3+4)*4=28的结果,可以将它们放在一个括号里,或者在(3+4)的括号前加一个+号,它表示让它后面的表达式作为函数的参数,相当于加个括号。所以,下面两个是等价的语句:

print ((3+4)*4);
print +(3+4)*4;

另外,由于print/say不使用括号的时候,它们会输出其后面的列表。所以有以下技巧:

  • 像cat命令一样,直接输出文件内容:print <>;
  • 像sort命令一样,排序文件内容:print sort <>;

转载于:https://www.cnblogs.com/f-ck-need-u/p/9557517.html

Perl的输出:print、say和printf、sprintf相关推荐

  1. printf, sprintf - 转换成指定格式的输出结果.

    名称: printf, sprintf - 转换成指定格式的输出结果. 语法: void printf( string format, ... ); string sprintf( string fo ...

  2. scanf printf sprintf fprintf

    都是C语言中的函数,但C++保留了这些函数,在头文件iostream中声明了. 1 scanf(格式控制,输出列表) printf (格式控制,输出列表) 举例: #include <iostr ...

  3. C语言中的格式化打印printf/sprintf以及嵌入式printf重定向进行DEBUG

    一.printf描述 在C语言中,打印函数主要包括printf/sprintf/fprintf/snprintf等等,目的是将"给定的内容"按照"指定的格式"输 ...

  4. 【Shell牛客刷题系列】SHELL21 格式化输出:来看个printf命令的小彩蛋~

    该系列是基于牛客Shell题库,针对具体题目进行查漏补缺,学习相应的命令. 刷题链接:牛客题霸-Shell篇. 该系列文章都放到专栏下,专栏链接为:<专栏:Shell>.欢迎关注专栏~ 本 ...

  5. python input和print,Python基础——输出[print()]与输入[input()]

    Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ Python是一种面向对象的解释型计算机程序设计语言,Python的特点是"简单"." ...

  6. python输出多行对齐_如何用python3输出print对齐?

    python中的函数相信大家都不陌生,提起print很多人都要举手回答,说我知道!这个函数也是比较常见的,所以小编想给大家多补充一点新的知识.内容不是很多,也算是偏基础类的知识,需要大家牢固掌握这个知 ...

  7. python输入变量输出常量_Python输入input、输出print

    1.输入input input是用于输入数据给变量.通过键盘输入的是字符串,如果需要其他格式,需要做转换.比如int.float类型数据,int() 如下是一个例子: 如果a不进行int转换,那么输入 ...

  8. python输入格式一个不带小数点_Python输入input、输出print

    1.输入input input是用于输入数据给变量.通过键盘输入的是字符串,如果需要其他格式,需要做转换.比如int.float类型数据,int() 如下是一个例子: 如果a不进行int转换,那么输入 ...

  9. python输出print(x+y)_Python 输出 运算 调用

    1.print 输出  (默认print 是自带换行# 换行输出print(a) print(b) print(a, end="\n") print(b, end="\n ...

最新文章

  1. Matplotlib绘图库初探
  2. lvdt 运放全波整流接线方式_常见的几种二极管整流电路解析
  3. 【牛客 - 331G】炫酷数字(反素数打表 或 扩展埃式筛法,结论)
  4. MyEclipes 设置代码自动提示
  5. 给图片下方加水印_别再看不起美图秀秀啦,想要做长图,批量加水印,用它超级方便...
  6. 华北水利水电大学计算机实验报告怎么写,考试类:华北水利水电大学C语言实验报告.doc...
  7. crio电压采集 labview_基于LabVIEW和CompactRIO开发的EDM过程控制器
  8. 服务器安装系统h730,戴尔H330_H730阵列卡驱动
  9. 交换机组播风暴_cisco 交换机端口广播风暴设置(非常详细)
  10. 编码,隐匿在计算机软硬件背后的语言读书笔记(1)
  11. 使用python opencv批量对贴图进行除透明边并压缩
  12. 最新 抖音 X-Gorgon 0408 和8408 算法定位查找过程笔记 最新抖音xg算法13.3版本
  13. 金融风控中英文术语手册(银行_消费金融信贷业务)_version5
  14. 用地预审与选址意见书
  15. 位图文件, JPG格式,PNG格式
  16. 高级数据操作--连接查询
  17. SAF(Storage Access Framework)使用攻略
  18. iw在java中什么意思,请问程序里piw和iw有什么区别
  19. oracle监听程序的配置
  20. OpenCPN + Ubuntu 18.04 源码编译 + Codeblocks 调试 + wxFormBuilder 安装

热门文章

  1. java 工厂的变形模拟的各种应用
  2. ubuntu11.04中如何像其他版本一样快速回到桌面
  3. DataGrid中的高级ToolTip
  4. docker开机启动和docker-compose开机启动执行相应的各个docker容器
  5. MySQl的库操作、表操作和数据操作
  6. go语言实现简易ftp客户端
  7. vue的Virtual Dom实现- snabbdom解密
  8. ruby和python简单对比
  9. 【职场】面试中最难回答频率最高的70个问题
  10. 从JVM的常见异常来看Tomcat中内存的设置