發生了什麼事:檢查重複數組
我ssh'd到我的本地主機上,ls桌面和採取這些項目,並把它們放入一個數組。
我硬編碼了一個項目的短列表,我將它們與一個散列進行比較,以查看是否有東西從主機中丟失(查看某個東西是否不在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 2012-01-18 18:20:33
我的不好,我錯過了。編輯。 – Sorin 2012-01-18 18:29:51
啊。我正在閱讀Data :: Dumper文檔,看看它還能做些什麼......如果我不想「打印」這些數據,而是將它寫入文件或通過電子郵件發送信息,該怎麼辦? – jackie 2012-01-18 18:59:54