[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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.            
复制代码

返回列表