免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發新帖
查看: 38894 | 回復: 1
打印 上一主題 下一主題

如何實現疊加輸出? [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發表于 2019-09-26 09:04 |只看該作者 |倒序瀏覽
本帖最后由 nanshanjin 于 2019-09-26 10:32 編輯

如題,現有文件如下:
D a        
P b
C c
O d
F e
G f
S g
G i
S j
G k
S l
D m
P n
...
...

\t分隔
輸出為
D_a
D_a; P_b
D_a; P_b;C_c
D_a; P_b;C_c;O_d
D_a; P_b;C_c;O_d;F_e
D_a; P_b;C_c;O_d;F_e;G_f
D_a; P_b;C_c;O_d;F_e;G_f;S_g
D_a; P_b;C_c;O_d;F_e;G_i
D_a; P_b;C_c;O_d;F_e;G_i;S_j
G和S之前疊加輸出,然后每個D、P之間循環,有大神知道如何實現嗎?

論壇徽章:
0
2 [報告]
發表于 2019-11-21 14:38 |只看該作者
  1. #!/usr/bin/perl

  2. use strict;

  3. my $string = '';
  4. my $string_temp = '';
  5. while (<DATA>) {
  6.          chomp;
  7.          my ($l1,$l2) = split /\s+/;
  8.          if ($l1 =~ /D/i) {
  9.                  $string = "$l1\_$l2";
  10.                  print "$string\n";
  11.          }
  12.          elsif ($l1 =~ /G/i) {
  13.                  $string_temp = "$string; $l1\_$l2";
  14.                  print "$string_temp\n";
  15.          }
  16.          elsif ($l1 =~ /S/i) {
  17.                  $string_temp .= "; $l1\_$l2";
  18.                  print "$string_temp\n";
  19.          }
  20.          else {
  21.                  $string .= "; $l1\_$l2";
  22.                  print "$string\n";
  23.          }
  24. }
  25. <>;

  26. __DATA__
  27. D a
  28. P b
  29. C c
  30. O d
  31. F e
  32. G f
  33. S g
  34. G i
  35. S j
  36. G k
  37. S l
  38. D m
  39. P n
  40. C c
  41. O d
  42. F e
  43. G f
  44. S g
  45. G i
  46. S j
  47. G k
  48. S l
復制代碼

評分

參與人數 1可用積分 +10 收起 理由
飄絮絮絮丶 + 10 贊一個!

查看全部評分

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則 發表回復

  

北京盛拓優訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區
中國互聯網協會會員  聯系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP
   日韩综合区视频第一页导航,无码JK粉嫩小泬在线观看,午夜精品A片一区二区三区,日日躁夜夜躁狠狠躁麻豆,大胆国模,免费观看无遮挡www的网站