linuxtone上某位童鞋的面试题

简介:

linuxtone上某位童鞋的面试题目,文件如下

 
  1. 品牌      产品编号      价格 
  2. A           001             10 
  3. A           002             20 
  4. A           003             30 
  5. B           004             40 
  6. B           005             50 
  7. C           006             60 
  8. C           007             70 

要求得到如下结果

 
  1. A产品编号    A价格        B产品编号     B价格         C产品编号      C价格 
  2. 001             10             004             40             006             60 
  3. 002             20             005             50             007             70 
  4. 003             30 

啥也不说,直接上perl代码

 
  1. #!/usr/bin/perl -w 
  2.  
  3. use strict; 
  4.  
  5. #定义一个空的哈希表
  6. my %hash = (); 
  7.  
  8. open my $file,'<','a.txt' or die "$!\n"; 
  9.  
  10. while ( <$file> ) { 
  11.        chomp; 
  12. #过滤掉文件第一行所在的汉字部分
  13.        next if /品牌/; 
  14.        my @array = split /\s+/; 
  15.        $hash{$array[0]} = [] unless exists $hash{$array[0]}; 
  16. #数组引用
  17.        push @{$hash{$array[0]}},"$array[1]\t\t$array[2]"; 
  18.  
  19. close $file; 
  20.  
  21. #遍历出哈希的键值
  22. for my $prod ( sort keys %hash ) { 
  23.  
  24. #解引用
  25.     my @tmp_array = @{$hash{$prod}}; 
  26. #输出结果
  27.     print "${prod}产品编号\t${prod}价格\n"; 
  28.     print join "\n",@tmp_array; 
  29.     print "\n"; 
  30.  

这个代码输出的格式并没有与要求的一样,有兴趣的自己改下,知道怎么用perl处理就好,我觉得这才是关键

output:

 
  1. [root@test henry]# perl a.pl 
  2. A产品编号       A价格 
  3. 001             10 
  4. 002             20 
  5. 003             30 
  6. B产品编号       B价格 
  7. 004             40 
  8. 005             50 
  9. C产品编号       C价格 
  10. 006             60 
  11. 007             70

本文转自dongfang_09859 51CTO博客,原文链接:http://blog.51cto.com/hellosa/580763,如需转载请自行联系原作者
相关文章
|
29天前
|
存储 消息中间件 NoSQL
大厂面试题含答案(一)
大厂面试题含答案(一)
|
7月前
|
存储 安全 C#
C#常见面试题含答案版
C#常见面试题含答案版
|
29天前
|
存储 算法 网络协议
大厂面试题含答案(二)
大厂面试题含答案(二)
|
9月前
|
缓存 JavaScript 前端开发
面试题练习第二篇
面试题练习第二篇
85 0
|
5月前
|
存储 Java Linux
Java核心知识点整理大全27-笔记(已完结)
Java核心知识点整理大全27-笔记(已完结)
44 0
|
5月前
|
机器学习/深度学习 分布式计算 监控
Java核心知识点整理大全26-笔记
Java核心知识点整理大全26-笔记
49 0
|
5月前
|
存储 算法 Java
Java核心知识点整理大全-笔记
JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、 一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接 的交互。
53 0
|
5月前
|
消息中间件 缓存 Java
Java核心知识点整理大全14-笔记
事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity )、一致性 ( Consistency )、隔离性 ( Isolation ) 和持久性 ( Durabilily )。
55 0
|
5月前
|
编解码 网络协议 算法
Java核心知识点整理大全15-笔记
Netty 是一个高性能、异步事件驱动的 NIO 框架,基于 JAVA NIO 提供的 API 实现。它提供了对 TCP、UDP 和文件传输的支持,作为一个异步 NIO 框架,Netty 的所有 IO 操作都是异步非阻塞 的,通过 Future-Listener 机制,用户可以方便的主动获取或者通过通知机制获得 IO 操作结果。
122 2
Java核心知识点整理大全15-笔记
|
5月前
|
存储 缓存 安全
Java核心知识点整理大全9-笔记
线程池中的线程已经用完了,无法继续为新任务服务,同时,等待队列也已经排满了,再也 塞不下新任务了。这时候我们就需要拒绝策略机制合理的处理这个问题。 JDK 内置的拒绝策略如下:
51 0

相关实验场景

更多