免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4803 | 回复: 11
打印 上一主题 下一主题

perl循环打印时,如何每次 跟在前1轮循环的列后面打印 [复制链接]

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-10-29 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-11-09 23:55 |只看该作者 |倒序浏览
大家好,请教个perl打印问题。
假如我有2个数组 @t=('a', 'b', 'c', ...),  @d = (1, 2, 3, ..)
循环打印,
第1次循环在terminal上输出
a
1
第2次循环在terminal上输出,不想新增2行,而是在第1次循环的列后面输出,即形如:
a  b
1  2
同理,第3次循环,在terminal输出,紧接着第2轮的列后面输出,形如
a  b   c
1  2   3

不知道如何实现,能否请大神们帮忙看看?

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
2 [报告]
发表于 2015-11-10 00:54 |只看该作者
本帖最后由 sunzhiguolu 于 2015-11-10 01:20 编辑

假设两个数组的长度一样, 可以试下:

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. sub print_array{
  5.     my ($ra, $sEnd) = (@_);
  6.     for (my $i = 0; $i <= $sEnd; $i++){
  7.         print "$ra->[$i] ";
  8.     }
  9.     print "\n";
  10. }
  11. my @aChars = qw(a b c d e);
  12. my @aNumbers = (1..5);

  13. for (my $i = 0; $i < scalar (@aChars); $i++){
  14.     if ($i == 0){
  15.         print "$aChars[$i]\n$aNumbers[$i]\n";
  16.     }else{
  17.         print_array(\@aChars, $i);
  18.         print_array(\@aNumbers, $i);
  19.     }
  20. }
复制代码

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
3 [报告]
发表于 2015-11-10 01:31 |只看该作者
这个稍微简洁一点, 代码如下:

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. sub get_str_by_array{
  5.     my ($ra, $sEnd, $sLines) = (@_);
  6.     for (my $i = 0; $i <= $sEnd; $i++){
  7.         $sLines .= "$ra->[$i] ";
  8.     }
  9.     $sLines .= "\n";
  10. }
  11. my @aChars = qw(a b c d e);
  12. my @aNumbers = (1..5);

  13. for (my $i = 0; $i < scalar (@aChars); $i++){
  14.     $i == 0 ? print "$aChars[$i]\n$aNumbers[$i]\n" : print get_str_by_array(\@aChars, $i), get_str_by_array(\@aNumbers, $i);
  15. }
复制代码

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
4 [报告]
发表于 2015-11-10 08:42 |只看该作者
本帖最后由 sunzhiguolu 于 2015-11-10 08:44 编辑

再试下:

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my @aChars = qw(a b c d e);
  5. foreach (1..@aChars){
  6.     for (my $i = 0; $i < $_; $i++){
  7.         print "$aChars[$i] ";
  8.     }
  9.     print "\n", join (' ', 1..$_), "\n";
  10. }
复制代码

论坛徽章:
0
5 [报告]
发表于 2015-11-10 11:28 |只看该作者
  1. my @t = ( 'a', 'b', 'c' );
  2. my @d = ( 1,   2,   3 );

  3. say "@t";
  4. say "@d";
复制代码

评分

参与人数 1信誉积分 +10 收起 理由
substr函数 + 10 很给力! 赞一个!

查看全部评分

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
6 [报告]
发表于 2015-11-10 12:33 |只看该作者
本帖最后由 MMMIX 于 2015-11-10 12:53 编辑

人楼主是想实现类似进度条的效果,不是单纯的打印。

http://stackoverflow.com/questio ... iline-progress-bars

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
7 [报告]
发表于 2015-11-10 12:52 |只看该作者
回复 5# Okelani
您这代码行数太少, 不能算数!!!

   

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
8 [报告]
发表于 2015-11-10 12:54 |只看该作者
回复 6# MMMIX
人楼主是想实现类似 进度条 的效果,不是单纯的打印。

大神您好, 您来个进度条的效果. (彩色的可以有吗?)
   

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-10-29 06:20:00
9 [报告]
发表于 2015-11-10 21:03 |只看该作者
回复 4# sunzhiguolu

谢谢你,差不多接近我的需求了。



   

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-10-29 06:20:00
10 [报告]
发表于 2015-11-10 23:11 |只看该作者
本帖最后由 weichanghe2000 于 2015-11-11 00:15 编辑

我真实的需求是想做到如下输出效果:
1. 3轮循环
2. 每一轮循环输出1列
3. 紧接着上一轮的列后面输出
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP