找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 15979|回复: 0

[原创代码] 批处理之家1-50练习汇总【练习-019】顺序排列文本内容之Perl法

[复制链接]
发表于 2011-10-9 15:23:19 | 显示全部楼层 |阅读模式
本帖最后由 sxw 于 2011-10-22 23:28 编辑

以前的题目,引用“
前些天在CN-DOS翻老帖,看到如此的一个题目,又加深了一点难度,有兴趣的来做下。
加分规则:
1.思路独特 5分
2.代码高效、通用 4分
3.技巧高超 4分
4.代码简洁 2分
5.完美代码 15分
题目如下:
a.txt内容:

A111
Assure
Cons tant
Smail

A012
Exa
Explosive
Weird
Admission

A077
Chant
Reli gious
Praise
Rhyming
Parsley

A034
Faith
Zealous
Absorb
Principle

按照段落序号从小到大顺序排列,如下:

A012
Exa
Explosive
Weird
Admission

A034
Faith
Zealous
Absorb
Principle

A077
Chant
Reli gious
Praise
Rhyming
Parsley

A111
Assure
Cons tant
Smail

每段的单词个数未知,在单词随机处有空格。
段落序号A之后的数字总是3位,若不够三位,则在前面加0表示。
A077,而不是A77。A034,而不是A34
 


试着用Perl来实现:

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. undef $/;
  5. my $file=<DATA>;
  6. my @a=split (m/^(A\d\d\d)/m,$file);
  7. shift @a;
  8. my %hash=@a;
  9. foreach (sort keys %hash) {
  10.                  print "$_","$hash{$_}\n";
  11.                  }
  12. __DATA__
  13. A111
  14. Assure
  15. Cons tant
  16. Smail

  17. A012
  18. Exa
  19. Explosive
  20. Weird
  21. Admission

  22. A077
  23. Chant
  24. Reli gious
  25. Praise
  26. Rhyming
  27. Parsley

  28. A034
  29. Faith
  30. Zealous
  31. Absorb
  32. Principle

  33.            
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 06:26 , Processed in 0.016956 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表