[問題] 刪掉串列內重覆字串

看板Perl作者 (@竹北)時間13年前 (2011/07/20 22:51), 編輯推噓5(507)
留言12則, 6人參與, 最新討論串1/1
最近剛開始看Perl,也試著練習寫... 目前遇到一個問題: 從檔案讀取資料進來處理, 一次讀取一列並儲存於一Array, 但可能會有資料重覆,如:(ABC重覆) ABC CDE ABC DEF ... ... 重覆的資料我就不儲存於Array中, 請問是否有函式可以直接判斷目前抓進來的字串是否已經儲存在Array中了呢? 如果沒有這種函式的話,不知道各位有何想法... 目前的想法是抓完資料之後,對Array再處理過...感覺有點麻煩... 謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.243.171.225

07/20 23:16, , 1F
hash會是好朋友:)
07/20 23:16, 1F

07/20 23:20, , 2F
嗯,感謝,剛才有人指點...
07/20 23:20, 2F

07/21 07:07, , 3F
Smart Matching也可以
07/21 07:07, 3F

07/21 07:25, , 4F

07/22 21:24, , 5F
use List::MoreUtils;
07/22 21:24, 5F

07/22 21:24, , 6F
@array=List::MoreUtils::uniq @array;
07/22 21:24, 6F

07/22 21:24, , 7F
這樣array裡面的字串都是獨一
07/22 21:24, 7F

07/24 07:49, , 8F
hash....
07/24 07:49, 8F

07/25 20:57, , 9F
my %hash;
07/25 20:57, 9F

07/25 20:58, , 10F
my @array_2 = grep (!$hash{$_}++, @array);
07/25 20:58, 10F

07/25 20:58, , 11F
利用hash 可以把@array 裡面有重複的值都拿掉
07/25 20:58, 11F

07/25 20:59, , 12F
剩下沒有重複的 都會放到@array_2裡面
07/25 20:59, 12F
文章代碼(AID): #1E9kjdTj (Perl)