Как не сохранить существующую разобранную строку в файл - PullRequest
0 голосов
/ 11 октября 2018

Я хочу проанализировать одну строку с помощью LWP :: UserAgent;что на самом деле я получаю, когда анализирую строки из Url и сохраняю в файл, как

https://facebook.com/hello
http://google.com
https://facebook.com/hello
https://facebook.com/hello
http://google.com

, есть ли способ напечатать только одну строку в файле, например:

https://facebook.com/hello
http://google.com

и егоболее 1000 строк, так что нелепо проверять вручную

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Хеш - лучшее решение для проверки дубликатов при получении ввода.Если у вас уже есть массив, полный строк, и вы хотите, чтобы в каждой строке была только одна строка, используйте uniq из List :: Util :

use strict;
use warnings;
use List::Util 1.45 'uniq';
my @urls = qw(https://facebook.com/hello http://google.com https://facebook.com/hello https://facebook.com/hello http://google.com);
print "$_\n" foreach uniq @urls;

Результат:

https://facebook.com/hello
http://google.com
0 голосов
/ 11 октября 2018

Если вы хотите свернуть дубликаты, хеш является инструментом для работы.

#!/usr/bin/env perl

use strict;
use warnings;

my %seen; 

while ( <DATA> ) {
   print unless $seen{$_}++;
}

__DATA__
https://facebook.com/hello
http://google.com
https://facebook.com/hello
https://facebook.com/hello
http://google.com

Повторяет специальный дескриптор файла DATA (например, встроенный), чтобы вы использовали любой файл URL-адресов, которые вы открыли.Затем проверьте, есть ли текущая строка в хеше %seen, и пропускает ли она.

Не выполняет никакой сортировки, просто печатает первый экземпляр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...