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>第二列过滤级别<30或者级别>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>(<DATA>) {</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] < 30 || </code><code>$array</code><code>[1] > 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,如需转载请自行联系原作者