0
Привет У меня есть эти строки и несколько строк в массиве.Удалить почти дублированные строки
revised_1.4_1.4-1.05-jan
revised_1.5_1.8-before
revised_1.5_1.8-after
revised_1.5_0.7-mid
deleted&reviewed_0.9-0.8-1.05-jan
deleted&reviewed_1.6_1.6-before
deleted&reviewed_0.5_1.8-after
deleted&uploaded_0.8_1.9-midweek
deleted&uploaded_1.0_1.3-offweek
accessedbeforesecondquarter_0.8._1.6-jan
accessedbeforesecondquarter_0.9_1.7-feb
Мне нужно сохранить одну из почти похожих строк в массиве. Как я могу создать код для получения этого массива?
revised_1.4_1.4-1.05-jan
deleted&reviewed_0.9-0.8-1.05-jan
deleted&uploaded_0.8_1.9-midweek
accessedbeforesecondquarter_0.8._1.6-jan
Вот мой код, и, похоже, он не работает для меня, чтобы сохранить строки в массиве.
my %seen;
my @strings = grep !$seen{ substr($_,0,2) }++, @strings;
Можете ли вы объяснить '(раскол "_", $ _) [0]} ++' этот код. Я использовал оператор декремента вместо '++', он также работает. В чем смысл оператора '++' в вашем коде? –
@aja '(split" _ ", $ _)' возвращает раздел split с '_' с '[0]' вы берете первый элемент списка, а затем увеличиваете счетчик для хэша. Любое ненулевое число истинно в Perl в булевом контексте. Поэтому ''! 1'' или ''! -1'' возвращает false. 'grep' возвращает элементы, которые являются истинными. – xtreak