Что происходит:Проверка Дубли в массиве
Я ssh'd на моем локальный, Л.С. рабочего стола и принимать те элементы и поместить их в массив.
Я жестко запрограммировал короткий список элементов, и я сравниваю их с хешем, чтобы увидеть, нет ли чего-либо из хоста (см., Если что-то из a НЕ в b, и дайте мне знать).
Итак, выяснив это, когда я распечатываю «недостающие файлы», я получаю кучу дубликатов (см. Ниже), не уверен, что это связано с тем, как файлы проверяются в цикле, но я подумал, что лучше всего будет просто разобраться в данных и устранить обманы.
Когда я это делаю и распечатаю фиксированные данные, печатается только один файл, два отсутствуют.
Любая идея, почему?
#!/usr/bin/perl
my $hostname = $ARGV[0];
my @hostFiles = ("filecheck.pl", "hostscript.pl", "awesomeness.txt");
my @output =`ssh $hostname "cd Desktop; ls -a"`;
my %comparison;
for my $file (@hostFiles) {
$comparison{$file} +=1;
}
for my $file (@output) {
$comparison{$file} +=2
}
for my $file (sort keys %comparison) {
@missing = "$file\n" if $comparison{$file} ==1;
#print "Extra file: $file\n" if $comparison{$file} ==2;
print @missing;
}
my @checkedMissingFiles;
foreach my $var (@missing){
if (! grep(/$var/, @checkedMissingFiles)){
push(@checkedMissingFiles, $var);
}
}
print "\n\nThe missing Files without dups:\n @checkedMissingFiles\n";
Пароль:
awesomeness.txt ##This is what is printing after comparing the two arrays
awesomeness.txt
filecheck.pl
filecheck.pl
filecheck.pl
hostscript.pl
hostscript.pl
The missing Files without dups:
##, что печатает после прополки дублирует hostscript.pl
Я думаю, что моя самая большая проблема заключается в сравнении файлов на хосте со списком выше.Я не хочу возвращать совпадающие элементы, но скорее найду, какие из% hostFiles не находятся в @files. – jackie
мой плохой, я пропустил это. Ред. – Sorin
Ahhh. Я читаю документацию Data :: Dumper, чтобы узнать, что еще он может сделать ... Что делать, если я не хочу «печатать» эти данные, а вместо этого писать в файл или отправлять информацию по электронной почте? – jackie