diff --git a/textarchive/lib/TA/ObjReg.pm b/textarchive/lib/TA/ObjReg.pm
index b7e0ef04ce910ebda07d2348f75c8c7ea4e2249a..06be7c5b5cf19e1da8c79e715718678af856c57e 100644
--- a/textarchive/lib/TA/ObjReg.pm
+++ b/textarchive/lib/TA/ObjReg.pm
@@ -60,13 +60,25 @@ sub new
 
 =cut
 
+sub _get_project_paths
+{
+  my $proj_name= shift;
+
+  my $proj_cfg_dir= join ('/', $ENV{'TABASE'}, 'projects', $proj_name);
+  my $proj_cfg_fnm= join ('/', $proj_cfg_dir, 'config.json');
+
+  return ($proj_cfg_dir, $proj_cfg_fnm);
+}
+
 sub get_project
 {
   my $obj= shift;
 
   my $proj_name= $obj->{'project'};
-  $obj->{'proj_cfg_dir'}= my $proj_cfg_dir= join ('/', $ENV{'TABASE'}, 'projects', $proj_name);
-  $obj->{'proj_cfg_fnm'}= my $proj_cfg_fnm= join ('/', $proj_cfg_dir, 'config.json');
+  my ($proj_cfg_dir, $proj_cfg_fnm)= _get_project_paths ($proj_name);
+
+  $obj->{'proj_cfg_dir'}= $proj_cfg_dir;
+  $obj->{'proj_cfg_fnm'}= $proj_cfg_fnm;
 
   my $proj_cfg;
   unless ($proj_cfg= TA::Util::slurp_file ($proj_cfg_fnm, 'json'))
@@ -822,7 +834,7 @@ sub ta_match
   my $all_reg= shift;
   my $search= shift;
 
-  my @k= keys $search;
+  my @k= keys %$search;
   my @e= @{$all_reg->{'entries'}};
   REG: for (my $i= 0; $i <= $#e; $i++)
   {
@@ -848,7 +860,7 @@ sub ta_filter
   my $all_reg= shift;
   my $search= shift;
 
-  my @k= keys $search;
+  my @k= keys %$search;
   my @e= @{$all_reg->{'entries'}};
   my @m= ();
   my @n= ();
diff --git a/textarchive/vlib001.pl b/textarchive/vlib001.pl
index 29c66642da78ac7c641e4243c3a44d84f4ab4e45..62f9b2c862244e04b1d98b0fe212d0507dbed79b 100755
--- a/textarchive/vlib001.pl
+++ b/textarchive/vlib001.pl
@@ -86,6 +86,14 @@ unless (defined ($project))
 }
 # &usage ('no store specified') unless (defined ($store));
 
+if ($op_mode eq 'edit')
+{
+  my ($proj_cfg_dir, $proj_cfg_fnm)= TA::ObjReg::_get_project_paths($project);
+  system ("\$EDITOR '$proj_cfg_fnm'");
+  # print "store_cfg: ", Dumper ($store_cfg);
+  exit;
+}
+
 my $objreg= new TA::ObjReg ('project' => $project, 'store' => $store, 'key' => 'md5');
 &usage ('no config found') unless (defined ($objreg));
 print "objreg: ", Dumper ($objreg) if ($DEBUG || $STOP);
@@ -112,13 +120,6 @@ elsif ($op_mode eq 'verify')
 {
   $objreg->verify_toc (\&verify_toc_item, \@hdr);
 }
-elsif ($op_mode eq 'edit')
-{
-  print "objreg: ", Dumper ($objreg);
-  my $proj_cfg_fnm= $objreg->{'proj_cfg_fnm'};
-  system ("\$EDITOR '$proj_cfg_fnm'");
-  # print "store_cfg: ", Dumper ($store_cfg);
-}
 elsif ($op_mode eq 'lookup')
 {
   foreach my $key (@PAR)
@@ -405,3 +406,11 @@ __END__
       file metadata in one place and let other hashes point to that
       place.
 
+=head1 BUGS
+
+option --edit fails when when config is broken:
+  $ vlib001.pl -p ph001 --edit
+  debug level: 0 , or } expected while parsing object/hash, at character
+  offset 74 (before ""backend": "MongoDB"...") at /home/gg/perl/TA/Util.pm
+  line 38.
+