У меня есть скрипт, в котором я заполняю имена переменных из XML-документа. В этом документе у моего антивируса есть поле «Время последнего обнаружения», в этом поле указывается значение по умолчанию, если обнаружение никогда не было.
Вроде так;
LastVirusDetectionTime <1970-01-01T00: 00: 00 + 11: 00>
Моя функция выглядит так:
my @NAMES = ("Name", "VirusDefinitions", "IPAddress", "OperatingSystem", "AgentVersion", "Infected", "LastScanTime","LastUpdateTime","WorstInfectionIDX","LastVirusTime","Threats","StartDateTime","StopDateTime","TotalFiles","Duration","AutoProtectEnabled" );
open( FIL, "< $FILEA" )|| die "cant open file $!" ;
while (defined ($_ = <FIL>)) {
foreach my $N (@NAMES) {
#print "looking for $N\n" ;
if ($_ =~ /$N/) {
if ($DEBUG gt 2){print "report: Looking for $N\n";}
$_ =~ /$N(.*)$N/;
my $TMP = $1;
$TMP =~ s/[\$#@~!&*()<>\[\];,?^ `\\\/]+//g;
#Switch that has to be extended if the array NAMES is extended
if ($N eq "Name") {
$NAME=$TMP;
}elsif ($N eq "VirusDefinitions"){
$VIRUSDEF=$TMP;
}elsif ($N eq "IPAddress") {
$IP=$TMP;
}elsif ($N eq "OperatingSystem") {
$OS=$TMP;
}elsif ($N eq "AgentVersion") {
$AGNT=$TMP;
}elsif ($N eq "Infected") {
$INFEC=$TMP;
}elsif ($N eq "LastScanTime") {
$LAST=$TMP;
}elsif ($N eq "LastUpdateTime"){
$LASTUP=$TMP;
}elsif ($N eq "WorstInfectionIDX") {
$winfid=$TMP;
}elsif ($N eq "LastVirusTime") {
$lastvirust=$TMP;
}elsif ($N eq "Threats"){
$threats=$TMP;
}elsif ($N eq "StartDateTime"){
$starttime=$TMP;
}elsif ($N eq "StopDateTime"){
$stoptime=$TMP;
}elsif ($N eq "TotalFiles"){
$totalfil=$TMP;
}elsif ($N eq "Duration"){
$scandur=$TMP;
}elsif ($N eq "AutoProtectEnabled") {
$autoprot=$TMP;
$CUST =~ s/\W//g; #We shave special characters off of the $CUST variable and return normal characters
print LOG "$today $time, <LastUpdateTime><$LASTUP><ProjectNr><$PROJNO><Site><$CUST><Device><$NAME><ThreatsFound><$threats><Definition><$VIRUSDEF><IpAddress><$IP><OS><$OS><AgentVersion><$AGNT><Infected><$INFEC><WorstInfectionID><$winfid><LastVirusDetectionTime><$lastvirust><ScanStartTime><$starttime><ScanStopTime><$stoptime><ScanDuration><$scandur><LastScan><$LAST><AutoProtectionEnabled><$autoprot><FilesScanned><$totalfil><FileName><$FILE1>\n" ;
#init variables again
init
}
Могу ли я как-нибудь проверить переменную $ lastvirust, чтобы увидеть, содержит ли она 1970 и просто ли вместо нее выводить «NA»?
Или, что еще лучше, сделайте так, чтобы он проверял, является ли год в переменной 2010 или старше, и просто выведите «NA» вместо тега 1970-01-01T00: 00: 00 + 11.00.