in reply to Re: Trying to avoid 9 conditionals
in thread Trying to avoid 9 conditionals

Thanks for the response. I implemented and it works great! Is there anyway to only print out the ones that changed? For example if the old version was 836 and the new version was 840 then only print out
Update aht set minor = 4 #DBVersion 8.3.6 Update aht set revision = 0 #DBVersion 8.4.6
Or if the old was 836 and the new was 837 only print out
Update aht set revision = 7 #DBVersion 8.3.6

Replies are listed 'Best First'.
Re^3: Trying to avoid 9 conditionals
by GrandFather (Saint) on Oct 17, 2008 at 21:10 UTC

    The intent of %versionEdits was that it would only contain the edits that you want to be reported. I don't know how you are obtaining the version change information that you were using to populate $UpdatedMinor etc so I can't advise on how best to populate %versionEdits. If you have an original version number and a current version number you could do something like:

    my @valueNames = qw/major minor revision/; my @versions = ( [qw(aht 8.3.6 9.4.0)], [qw(dog 3.3.1 3.3.2)], ); for my $version (@versions) { my ($app, $oldStr, $newStr) = @$version; my %old; my %new; @old{@valueNames} = split /\./, $oldStr; @new{@valueNames} = split /\./, $newStr; for my $name (@valueNames) { $oldVersions{$app}{$name} = $old{$name}; next if $new{$name} == $old{$name}; $versionEdits{$app}{$name} = $new{$name}; } }

    Perl reduces RSI - it saves typing