天天看点

perl的魅力

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<code>网上看到一道题,内容如下。</code>

<code>123456      23           1000</code>

<code>234567      34           1234</code>

<code>345678      21           1234</code>

<code>456789      45           4532</code>

<code>234567      34           1233</code>

<code>345678      21           3445</code>

<code>其中第一列为ID号  第二列为级别   第三列为时间</code>

<code>题目要求,写一个脚本处理文本,处理结果为</code>

<code>第一列显示ID</code>

<code>第二列过滤级别&lt;30或者级别&gt;40</code>

<code>第三列显示内容为,若为相同的ID号,计算时间之和</code>

总觉得这个题目有点问题,数据有点不对应,不多说了,直接上代码

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

<code>#!/bin/env perl</code>

<code># -*- coding: utf-8 -*-</code>

<code>use</code> <code>strict;</code>

<code>my</code> <code>%hash</code><code>;</code>

<code>while</code> <code>(&lt;DATA&gt;) {</code>

<code>       </code><code>chomp</code><code>;</code>

<code>       </code><code>next</code> <code>if</code> <code>/^$|^</code><code>#/;</code>

<code>       </code><code>my</code> <code>@array</code> <code>= </code><code>split</code><code>;</code>

<code>       </code><code>if</code> <code>(</code><code>$array</code><code>[1] &lt; 30 || </code><code>$array</code><code>[1] &gt; 40) {</code>

<code>           </code><code>push</code> <code>@{</code><code>$hash</code><code>{</code><code>"$array[0]\t$array[1]\t"</code><code>}},</code><code>$array</code><code>[2];</code>

<code>       </code><code>}</code>

<code>}</code>

<code>for</code> <code>my</code> <code>$num</code> <code>(</code><code>sort</code> <code>keys</code> <code>%hash</code><code>) {</code>

<code>    </code><code>my</code> <code>@a</code> <code>= @{</code><code>$hash</code><code>{</code><code>$num</code><code>}};</code>

<code>    </code><code>printf</code> <code>"%d"</code><code>,</code><code>$num</code><code>;</code>

<code>    </code><code>printf</code> <code>sum(\</code><code>@a</code><code>);</code>

<code>    </code><code>printf</code> <code>"\n"</code><code>;</code>

<code>sub</code> <code>sum {</code>

<code>    </code><code>my</code> <code>(</code><code>$ref</code><code>) = </code><code>@_</code><code>;</code>

<code>    </code><code>my</code> <code>$i</code> <code>= 0;</code>

<code>    </code><code>for</code> <code>(@</code><code>$ref</code><code>) {</code>

<code>         </code><code>$i</code> <code>+= </code><code>$_</code><code>;</code>

<code>    </code><code>}</code>

<code>    </code><code>return</code> <code>$i</code><code>;</code>

<code>__DATA__</code>

运行结果:

<code>123456  23      1000</code>

<code>345678  21      4679</code>

<code>456789  45      4532</code>

<code></code>

本文转自dongfang_09859 51CTO博客,原文链接:http://blog.51cto.com/hellosa/1554779,如需转载请自行联系原作者