要刪除重複,最好的辦法是使用List::MoreUtils的uniq
,:
use List::MoreUtils 'uniq';
my @unique_list = uniq @list;
或不CPAN(雖然這是很少有必要):
my %values;
@values{@list} =();
my @unique_list = keys %values;
您可以按任何列表使用內置函數排序 - 見perldoc -f sort和perldoc -q 'How do I sort an array'。
順便提一下,您引用的數據與您描述的行爲不匹配。如果聲明數組作爲
@uniqarr = qw(error 0 goodrecordno:6123, error 0 goodrecordno:6143, error 1 goodrecordno:10245, error 1 goodrecordno:10678, error 1 goodrecordno:10698, error 2 goodrecordno:16245, error 2 goodrecordno:16123);
...那麼它的內容將包括:
(
'error',
'0',
'goodrecordno:6123,',
'error',
'0',
'goodrecordno:6143,',
'error',
'1',
'goodrecordno:10245,',
'error',
'1',
'goodrecordno:10678,',
'error',
'1',
'goodrecordno:10698,',
'error',
'2',
'goodrecordno:16245,',
'error',
'2',
'goodrecordno:16123'
);
你需要做的是閱讀的數據轉換成哈希表什麼,然後根據解析你的標準。我不能進一步,因爲它不是很清楚你在找什麼。請閱讀perldoc perldata和perldoc perldsc更多地瞭解Perl數據結構。
Hunh?發佈Stack Overflow是爲了支付專家網站的替代方案時請記住。使用神祕的速記來表明你的問題不可能在將來幫助任何人。該數組將被稱爲'@ uniqarr',除非你想要一個名爲'goodrecord:6123','(*帶鍵*中的逗號)的鍵,否則不應該將逗號放在'qw()'列表中。什麼是「o/p」? *輸出*?您可以以輸入* 4 *多餘字符爲代價節省大量的困惑。 – Axeman 2010-09-08 20:19:43
「不使用CPAN模塊」?爲什麼? – Ether 2010-09-08 20:22:54
對不起老闆...!我試圖學習編寫沒有cpan模塊的每個程序。所以我只想要它沒有它們,因爲它們可能使用cpan模塊很簡單。我想從基礎學習核心邏輯。時間起點,我會明確寫下所有內容。感謝您的建議和意見。 – Sunny 2010-09-08 20:34:33