perl 对比两个数值是否相同编程实例
最近,朋友要求写一个小小的backup 脚本,可以把freebsd 的系统打包,然后一键恢复系统(备份脚本与恢复脚本已经完成,纯shell)为了验证自己备份的软件包,与系统的软件包是否一致, 主要是想看看有没有漏掉的。程序是跟据pkg_list 这个文件,然后再读取/var/db/pkg 这个目录,看看是否有漏掉的。[code]#!/usr/bin/perl -w
# Script Name: verify the backup packages and system packages
# author : fengyong
# date: 2010-01-29
use strict;
open (FH,"<pkg_list") or die "pkg_list not found!";
my $file={};
while (<FH>){
chomp($_);
$_=~/(\S+)\.tgz/;
$file->{$1}=0;
#print "DEBUG::$1\n";
}
foreach (keys(%{$file})){
print "DEBUG: $_ => $file->{$_}\n"
}
opendir(DIR,"/var/db/pkg") or die "can't open dir /var/db/pkg: $!";
my @dir=readdir(DIR);
foreach (@dir){
print "DEBUG: package $_ exists!\n";
next if $_=~/^\.{1,2}$/;
if (exists($file->{$_})){
$file->{$_}=1;
}else{
$file->{$_}=0;
}
}
foreach (keys(%{$file})){
print "RESULT: $_.tgz => $file->{$_}\n";
}[/code]输出结果
0表示未备份的,1表示已经在备份列表中,perl未忘记呀[code]RESULT: p5-FuzzyOcr-2.3.b_2,1.tgz => 0
RESULT: p5-Net-DNS-0.59.tgz => 1
RESULT: p5-Convert-BinHex-1.119.tgz => 1
RESULT: p5-Digest-SHA1-2.11.tgz => 1
RESULT: php5-posix-5.2.0.tgz => 0
RESULT: courier-authlib-base-0.58_2.tgz => 1
RESULT: postfix-2.3.4,1.tgz => 1
RESULT: pkgconfig-0.20.tgz => 0
RESULT: cyrus-sasl-2.1.22.tgz => 1
RESULT: freetype2-2.2.1_1.tgz => 1
RESULT: php5-ctype-5.2.0.tgz => 0
RESULT: jbigkit-1.6.tgz => 0
RESULT: p5-Compress-Zlib-1.42.tgz => 1
RESULT: lcms-1.16_1,1.tgz => 0
RESULT: p5-Digest-HMAC-1.01.tgz => 1
RESULT: p5-XML-NamespaceSupport-1.09_1.tgz => 1[/code] :lol 勇哥又出山了
页:
[1]