Author: REHSACK
Date: Sun Aug 29 02:49:41 2010
New Revision: 14349

Modified:
   dbi/trunk/lib/DBD/DBM.pm

Log:
Review code (while writing DBD::File HowTo) and correct:
- logical evaluation preferred from left to right (typical read order of
  developers)
- fix issue when '-Flags' is set in $dbh->{dbm_berkeley_flags}
- fix issue returning undef in fetch_one_row when key not known


Modified: dbi/trunk/lib/DBD/DBM.pm
==============================================================================
--- dbi/trunk/lib/DBD/DBM.pm    (original)
+++ dbi/trunk/lib/DBD/DBM.pm    Sun Aug 29 02:49:41 2010
@@ -302,7 +302,7 @@
             }
             # else wrapped GDBM
         }
-        $meta->{f_ext} = $ext if ( defined($ext) );
+        defined($ext) and $meta->{f_ext} = $ext;
     }
 
     $self->SUPER::bootstrap_table_meta( $dbh, $meta, $table );
@@ -315,12 +315,12 @@
     unless ( defined( $meta->{dbm_tietype} ) )
     {
         my $tie_type = $meta->{dbm_type};
-        require "$tie_type.pm" unless ( $INC{"$tie_type.pm"} );
-        $tie_type = 'BerkeleyDB::Hash' if ( $tie_type eq 'BerkeleyDB' );
+        $INC{"$tie_type.pm"} or require "$tie_type.pm";
+        $tie_type eq 'BerkeleyDB' and $tie_type = 'BerkeleyDB::Hash';
 
         if ( $meta->{dbm_mldbm} )
         {
-            require "MLDBM.pm" unless ( $INC{"MLDBM.pm"} );
+            $INC{"MLDBM.pm"} or require "MLDBM.pm";
             $meta->{dbm_usedb} = $tie_type;
             $tie_type = 'MLDBM';
         }
@@ -331,13 +331,13 @@
     unless ( defined( $meta->{dbm_store_metadata} ) )
     {
         my $store = $dbh->{dbm_store_metadata};
-        $store = 1 unless ( defined($store) );
+        defined($store) or $store = 1;
         $meta->{dbm_store_metadata} = $store;
     }
 
     unless ( defined( $meta->{col_names} ) )
     {
-        $meta->{col_names} = $dbh->{dbm_cols} if ( defined( $dbh->{dbm_cols} ) 
);
+        defined( $dbh->{dbm_cols} ) and $meta->{col_names} = $dbh->{dbm_cols};
     }
 
     $self->SUPER::init_table_meta( $dbh, $table );
@@ -361,24 +361,22 @@
             my %tie_flags;
             if ( my $f = $meta->{dbm_berkeley_flags} )
             {
-                $DB_CREATE = $f->{DB_CREATE} if ( $f->{DB_CREATE} );
-                $DB_RDONLY = $f->{DB_RDONLY} if ( $f->{DB_RDONLY} );
-                delete $f->{DB_CREATE};
-                delete $f->{DB_RDONLY};
+                defined( $f->{DB_CREATE} ) and $DB_CREATE = delete 
$f->{DB_CREATE};
+                defined( $f->{DB_RDONLY} ) and $DB_RDONLY = delete 
$f->{DB_RDONLY};
                 %tie_flags = %$f;
             }
-            $tie_flags{'-Flags'} = $DB_RDONLY;
-            $tie_flags{'-Flags'} = $DB_CREATE if ( $flags->{lockMode} or 
$flags->{createMode} );
+            my $open_mode = $flags->{lockMode} || $flags->{createMode} ? 
$DB_CREATE : $DB_RDONLY;
             @tie_args = (
                           -Filename => $meta->{f_fqbn},
+                          -Flags    => $open_mode,
                           %tie_flags
                         );
         }
         else
         {
             my $open_mode = O_RDONLY;
-            $open_mode = O_RDWR if ( $flags->{lockMode} );
-            $open_mode = O_RDWR | O_CREAT | O_TRUNC if ( $flags->{createMode} 
);
+            $flags->{lockMode}   and $open_mode = O_RDWR;
+            $flags->{createMode} and $open_mode = O_RDWR | O_CREAT | O_TRUNC;
 
             @tie_args = ( $meta->{f_fqbn}, $open_mode, 0666 );
         }
@@ -392,7 +390,7 @@
         $meta->{hash} = {};
         my $tie_class = $meta->{dbm_tietype};
         eval { tie %{ $meta->{hash} }, $tie_class, @tie_args };
-        croak "Cannot tie(\%h $tie_class @tie_args): $@" if ($@);
+        $@ and croak "Cannot tie(\%h $tie_class @tie_args): $@";
     }
 
     unless ( $flags->{createMode} )
@@ -434,7 +432,7 @@
 {
     my ( $self, $data ) = @_;
     my $meta = $self->{meta};
-    untie %{ $meta->{hash} } if ( $meta->{hash} );
+    $meta->{hash} and untie %{ $meta->{hash} };
     $self->SUPER::drop($data);
     # XXX extra_files
     -f $meta->{f_fqbn} . '.dir'
@@ -534,8 +532,8 @@
 {
     my ( $self, $key_only, $key ) = @_;
     my $meta = $self->{meta};
-    return $meta->{col_names}->[0] if ($key_only);
-    return undef unless ( exists $meta->{hash}->{$key} );
+    $key_only and return $meta->{col_names}->[0];
+    exists $meta->{hash}->{$key} or return;
     my $val = $meta->{hash}->{$key};
     $val = ( ref($val) eq 'ARRAY' ) ? $val : [$val];
     my $row = [ $key, @$val ];
@@ -554,7 +552,7 @@
     my ( $self, $data, $aryref ) = @_;
     my $meta = $self->{meta};
     my $key  = shift @$aryref;
-    return unless ( defined $key );
+    defined $key or return;
     my $row = ( ref($aryref) eq 'ARRAY' ) ? $aryref : [$aryref];
     $meta->{hash}->{$key} = $meta->{dbm_mldbm} ? $row : $row->[0];
 }
@@ -566,7 +564,7 @@
     my $key    = shift @$origary;
     my $newkey = shift @$aryref;
     return unless ( defined $key );
-    delete $meta->{hash}->{$key} unless ( $key eq $newkey );
+    $key eq $newkey or delete $meta->{hash}->{$key};
     my $row = ( ref($aryref) eq 'ARRAY' ) ? $aryref : [$aryref];
     $meta->{hash}->{$newkey} = $meta->{dbm_mldbm} ? $row : $row->[0];
 }
@@ -578,7 +576,7 @@
 {
     my $self = shift;
     my $meta = $self->{meta};
-    untie %{ $meta->{hash} } if ( $meta->{hash} );
+    $meta->{hash} and untie %{ $meta->{hash} };
 
     $self->SUPER::DESTROY();
 }
@@ -595,8 +593,8 @@
 #
 sub truncate ($$)
 {
-    my ( $self, $data ) = @_;
-    1;
+    # my ( $self, $data ) = @_;
+    return 1;
 }
 
 # seek() is only needed if you use IO::File
@@ -605,7 +603,8 @@
 #
 sub seek ($$$$)
 {
-    my ( $self, $data, $pos, $whence ) = @_;
+    # my ( $self, $data, $pos, $whence ) = @_;
+    return 1;
 }
 
 # Th, th, th, that's all folks!  See DBD::File and DBD::CSV for other

Reply via email to