X-Git-Url: https://code.th-h.de/?p=usenet%2Fnewsstats.git;a=blobdiff_plain;f=lib%2FNewsStats.pm;h=efcc7c07d73a3504d109c0dd32cb44abda010cbc;hp=8a62179915a12342f48733006938c08e4f8ce511;hb=b5ef5726643df214528dac1a13a1829bd8b4ab48;hpb=1af57a53905788c99a088bb6b17088293c0224d1 diff --git a/lib/NewsStats.pm b/lib/NewsStats.pm index 8a62179..efcc7c0 100644 --- a/lib/NewsStats.pm +++ b/lib/NewsStats.pm @@ -4,7 +4,7 @@ # # Copyright (c) 2010-2013 Thomas Hochstein # -# This module can be redistributed and/or modified under the same terms under +# This module can be redistributed and/or modified under the same terms under # which Perl itself is published. package NewsStats; @@ -49,8 +49,8 @@ require Exporter; Output => [qw(OutputData FormatOutput)], SQLHelper => [qw(SQLHierarchies SQLSortOrder SQLGroupList SQLSetBounds SQLBuildClause GetMaxLength)]); -$VERSION = '0.01'; -our $PackageVersion = '0.01'; +$VERSION = '0.02'; +our $PackageVersion = '0.02'; use Data::Dumper; use File::Basename; @@ -80,7 +80,7 @@ sub ShowVersion { ################################################################################ ### display version and exit print "NewsStats v$PackageVersion\n$MyVersion\n"; - print "Copyright (c) 2010-2012 Thomas Hochstein \n"; + print "Copyright (c) 2010-2013 Thomas Hochstein \n"; print "This program is free software; you may redistribute it ". "and/or modify it under the same terms as Perl itself.\n"; exit(100); @@ -244,7 +244,7 @@ sub ReadGroupList { ### ignoring everything after the first whitespace and so accepting files ### in checkgroups format as well as (parts of) an INN active file) ### IN : $Filename : file to read -### OUT: \%ValidGroups: hash containing all valid newsgroups +### OUT: \%ValidGroups: reference to a hash containing all valid newsgroups my ($Filename) = @_; my %ValidGroups; open (my $LIST,"<$Filename") or &Bleat(2,"Cannot read $Filename: $!"); @@ -275,12 +275,12 @@ sub GetTimePeriod { my ($Verbal, $SQL); # define a regular expression for a month my $REMonth = '\d{4}-\d{2}'; - + # default to last month if option is not set if(!$Month) { $Month = &LastMonth; } - + # check for valid input if ($Month =~ /^$REMonth$/) { # single month (YYYY-MM) @@ -299,7 +299,7 @@ sub GetTimePeriod { # invalid input return (undef,undef); } - + return ($Verbal,$SQL); }; @@ -407,7 +407,7 @@ sub OutputData { my %ValidKeys = %{$ValidKeys} if $ValidKeys; my ($FileName, $Handle, $OUT); our $LastIteration; - + # define output types my %LegalOutput; @LegalOutput{('dump','list','pretty')} = (); @@ -439,7 +439,7 @@ sub OutputData { # safeguards for filename creation: # replace potential problem characters with '_' $FileName = sprintf('%s-%s',$FileTempl,$Caption); - $FileName =~ s/[^a-zA-Z0-9_-]+/_/g; + $FileName =~ s/[^a-zA-Z0-9_-]+/_/g; open ($OUT,">$FileName") or &Bleat(2,sprintf("Cannot open output file '%s': $!", $FileName)); @@ -674,7 +674,7 @@ sub SQLSetBounds { ### OUT: SQL code to become part of a WHERE or HAVING clause my ($Type,$LowBound,$UppBound) = @_; ($LowBound,$UppBound) = SQLCheckNumber($LowBound,$UppBound); - if($LowBound and $UppBound and $LowBound > $UppBound) { + if($LowBound and defined($UppBound) and $LowBound > $UppBound) { &Bleat(1,"Lower boundary $LowBound is larger than Upper boundary ". "$UppBound, exchanging boundaries."); ($LowBound,$UppBound) = ($UppBound,$LowBound); @@ -690,7 +690,7 @@ sub SQLSetBounds { } elsif ($Type eq 'sum') { $WhereHavingFunction = 'SUM(postings)' } - $LowBound = sprintf('%s >= '.$LowBound,$WhereHavingFunction) if ($LowBound); + $LowBound = sprintf('%s >= '.$LowBound,$WhereHavingFunction) if defined($LowBound); # set $LowBound to SQL statement: # 'WHERE postings <=', 'HAVING MAX(postings) <=' or 'HAVING AVG(postings) <=' if ($Type eq 'level') { @@ -700,7 +700,7 @@ sub SQLSetBounds { } elsif ($Type eq 'sum') { $WhereHavingFunction = 'SUM(postings)' } - $UppBound = sprintf('%s <= '.$UppBound,$WhereHavingFunction) if ($UppBound); + $UppBound = sprintf('%s <= '.$UppBound,$WhereHavingFunction) if defined($UppBound); return ($LowBound,$UppBound); }; @@ -776,5 +776,3 @@ sub CheckValidNewsgroups { #####------------------------------- done ---------------------------------##### 1; - -