输出时缓冲区疑惑
时间:2010-11-14
来源:互联网
Mastering Perl 上的一个例子
复制代码
输出:
--------------------------------------------------
Before I do anything
--------------------------------------------------
Size is 24
--------------------------------------------------
After I assign a string
--------------------------------------------------
Size is 56
--------------------------------------------------
After I use it as a number
--------------------------------------------------
Size is 64
因为好几个地方都用到print_message,每次复制粘贴比较麻烦,就把它作成一个小的模块
复制代码
输出变成这样了:
--------------------------------------------------
Before I do anything
--------------------------------------------------
--------------------------------------------------
After I do something
--------------------------------------------------
--------------------------------------------------
After I do anything
--------------------------------------------------
Size is 24Size is 56Size is 64
我的解决方法有两个:
1. 在size.plx 文件开始设置 local $| = 1;
2. 在
复制代码
后面添加换行符
即
复制代码
但对第二个文件的错误输出还是不太理解,请那位大侠解释下,谢谢了
- #!/usr/bin/perl
- use Devel::Size qw(size);
- my $n;
- print_message( "Before I do anything" );
- print "Size is ", size( \$n );
- print_message( "After I assign a string" );
- $n = '1';
- print "Size is ", size( \$n );
- print_message( "After I use it as a number" );
- my $m = $n + 1;
- print "Size is ", size( \$n );
- sub print_message { print "\n", "-" x 50, "\n$_[0]\n", "-" x 50, "\n" }
--------------------------------------------------
Before I do anything
--------------------------------------------------
Size is 24
--------------------------------------------------
After I assign a string
--------------------------------------------------
Size is 56
--------------------------------------------------
After I use it as a number
--------------------------------------------------
Size is 64
因为好几个地方都用到print_message,每次复制粘贴比较麻烦,就把它作成一个小的模块
- #Print.pm
- package Print;
-
- require Exporter;
-
- our @ISA = qw(Exporter);
- our @EXPORT = qw(print_message);
- our @EXPORT_OK = qw();
- our $VERSION = 1.00;
-
- sub print_message {
- print STDERR "\n", "-" x 50,
- "\n$_[0]\n", "-" x 50, "\n";
- }
-
- 1
-
- #size.plx
- #!/usr/bin/perl
-
- use strict;
- use warnings;
- use Devel::Size qw/size/;
- use Print;
-
- my $n;
-
- print_message("Before I do anything");
- print "Size is ", size(\$n);
-
- print_message("After I do something");
- $n = '1';
- print "Size is ", size(\$n);
-
- print_message("After I do anything");
- my $m = $n + 1;
- print "Size is ", size(\$n);
--------------------------------------------------
Before I do anything
--------------------------------------------------
--------------------------------------------------
After I do something
--------------------------------------------------
--------------------------------------------------
After I do anything
--------------------------------------------------
Size is 24Size is 56Size is 64
我的解决方法有两个:
1. 在size.plx 文件开始设置 local $| = 1;
2. 在
- print "Size is ", size(\$n);
即
- print "Size is ", size(\$n), "\n";

作者: vinian 发布时间: 2010-11-14
回复 vinian
你把print_message写到模组时
变成 print STDERR ....
STDERR跟 STDOUT是不一样的
你把print_message写到模组时
变成 print STDERR ....
STDERR跟 STDOUT是不一样的
作者: jason680 发布时间: 2010-11-14
QUOTE:
回复 vinian
你把print_message写到模组时
变成 print STDERR ....
STDERR跟 STDOUT是不一样的
jason680 发表于 2010-11-14 23:01
你把print_message写到模组时
变成 print STDERR ....
STDERR跟 STDOUT是不一样的
jason680 发表于 2010-11-14 23:01
谢了,一直就只盯着输出,倒把这给忘检查了...
作者: vinian 发布时间: 2010-11-14
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28