看板 Perl 關於我們 聯絡資訊
網址: http://codepad.org/RwOexb5H 代碼: @CODE = qw(04 70 71 972); while(<DATA>){ ################################# # Why not chomp in codepad.org ?? # # 推測原因: # 底下 __DATA__ 區塊的換行由 \r\n 組成 # 真正到了運行環境下: $/ = "\n" # 所以 chomp 沒辦法把 \r 給 remove 掉 tr/\r\n//d; my ($sn,$code) = split(','); push(@{$list{$sn}},$code); } for my $sn (sort keys %list){ my @miss; ################################# # Perl Sets(參考 difference 部份) # ref. https://coderwall.com/p/uawhga/perl-sets for my $code (@CODE){ push(@miss,$code) unless grep { $code eq $_} @{$list{$sn}}; } if(@miss){ my $miss = join(' and ',@miss); print "$sn, missing $miss\n"; } else{ print "$sn, no missing\n"; } } __DATA__ S68,71 S65,70 S66,972 S68,972 S65,71 S66,04 S68,70 S67,71 S68,04 ※ 引述《yalent ( 心只有妳 )》之銘言: : 各位大大 : 小弟有個問題想請教 : 讀取之檔案如下,第一個資料為不固定的流水號(S65~S68),第二個資料為需要的資料代碼 : 每個流水號都需要有 [04, 70, 71, 972] 這些代碼,但是有可能會缺漏 : S68,71 : S65,70 : S66,972 : S68,972 : S65,71 : S66,04 : S68,70 : S67,71 : S68,04 : 我想跟 [04, 70, 71, 972]比對,如果有缺少的,就列出缺少的部分; : 如無缺少,就no missing : 列出如下 : S65, missing 04 and 972 : S66, missing 70 and 71 : S67, missing 04 and 70 and 972 : S68, no missing : 有想到將所有的流水號之代碼塞到陣列中,陣列以流水號命名 : 然後比對所需的代碼,但是目前沒什麼頭緒 : 不曉得有哪位朋友可以指教的呢? : 感謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.168.61.160 ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1506481008.A.BC5.html
yalent: 感謝~ 04/23 22:12