+sub hashref2where {
+ my ($href) = @_;
+
+ if (!defined $href) {
+ &WARN("hashref2where: href == NULL.");
+ return;
+ }
+
+ if (ref($href) ne "HASH") {
+ &WARN("hashref2where: href is not HASH ref (href => $href)");
+ return;
+ }
+
+ my %hash = %{ $href };
+ foreach (keys %hash) {
+ my $v = $hash{$_};
+
+ if (s/^-//) { # as is.
+ $hash{$_} = $v;
+ delete $hash{'-'.$_};
+ } else {
+ $hash{$_} = &sqlQuote($v);
+ }
+ }
+
+ return join(' AND ', map { $_."=".$hash{$_} } keys %hash );
+}
+
+sub hashref2update {
+ my ($href) = @_;
+
+ if (ref($href) ne "HASH") {
+ &WARN("hashref2update: href is not HASH ref.");
+ return;
+ }
+
+ my %hash;
+ foreach (keys %{ $href }) {
+ my $k = $_;
+ my $v = ${ $href }{$_};
+
+ # is there a better way to do this?
+ if ($k =~ s/^-//) { # as is.
+ 1;
+ } else {
+ $v = &sqlQuote($v);
+ }
+
+ $hash{$k} = $v;
+ }
+
+ return join(', ', map { $_."=".$hash{$_} } sort keys %hash);
+}
+
+sub hashref2array {
+ my ($href) = @_;
+
+ if (ref($href) ne "HASH") {
+ &WARN("hashref2update: href is not HASH ref.");
+ return;
+ }
+
+ my(@k, @v);
+ foreach (keys %{ $href }) {
+ my $k = $_;
+ my $v = ${ $href }{$_};
+
+ # is there a better way to do this?
+ if ($k =~ s/^-//) { # as is.
+ 1;
+ } else {
+ $v = &sqlQuote($v);
+ }
+
+ push(@k, $k);
+ push(@v, $v);
+ }
+
+ return (\@k, \@v);
+}
+