All, 

I am trying to run logic that will copy/delete  3
versions of log.\d+ files to their respective
directories.  Because there are so many directories, I
have built a hash table instead of using a bunch of
"if else conditions" with reg exps. My problem is it
is not returning the words_num translation.  

BEGIN CODE


foreach my $log (@twoweekdir_contents) {
  $NBlogs2[$i++] = 
  $log if ($log =~
 /bpcd\/log|bpdbm\/log|bptm\/log.\d+/);
      }

## array elements look like log.6563 ##

##-- Build a hash look-up table for subdirs --##

      my %subdir_for = (
         'admin'        => 0,  'bp'          => 1, 
'bparchive'       => 2,
         'bpbackup'     => 3,  'bpbkar'      => 4, 
'bpbrm'           => 5,
         'bpbrmds'      => 6,  'bpbrmvlt'    => 7, 
'bpcd'            => 8,
         'bpcompatd'    => 9,  'bpcoord'     => 10,
'bpdb2'           => 11,
         'bpdbjobs'     => 12, 'bpdbm'       => 13,
'bpdbsbdb2'       => 14,
         'bpdbsbora'    => 15, 'bpdm'        => 16,
'bpdynamicclient' => 17,
         'bpfilter'     => 18, 'bpfis'       => 19,
'bpfsmap'         => 20,
         'bphdb'        => 21, 'bpinst'      => 22,
'bpjava-msvc'     => 23,
         'bpjava-susvc' => 24, 'bpjava-usvc' => 25,
'bpjobd'          => 26,
         'bpkeyutil'    => 27, 'bplist'      => 28,
'bpmount'         => 29,
         'bpnbat'       => 30, 'bporaexp'    => 31,
'bporaimp'        => 32,
         'bporaimp64'   => 33, 'bppfi'       => 34,
'bprd'            => 35,
         'bprestore'    => 36, 'bpsched'     => 37,
'bpsynth'         => 38,
         'bptm'         => 39, 'dbclient'    => 40,
'infxbsa'         => 41,
         'mtfrd'        => 42, 'nbpushdata'  => 43,
'nbvault'         => 44,
         'sybackup'     => 45, 'symlogs'     => 46,
'tar'             => 47,
         'vault'        => 48, 'vnetd'       => 49,
'vopied'          => 50,
         'bporaexp64'   => 51, 'mklogdir'    => 52,

         );

      sub words_to_num {
          my $words = @_;


      ##-- Treat each sequence of non-whitespace as a
word --##
      my @words = split /\s+/, $words;


      ##-- Translate each word to its appropriate
number --##
      my $num = q{};
      foreach my $word (@words) {
          my $digit = $subdir_for{lc $word};
          if (defined $digit) {
              $num .= $digit;
          }
      }

      return $num;

      } ##-- End routine words_to_num --##

print words_to_num('vopied admin'),"\n";

snippet {....}

So instead of doing the code below because the subdirs
are unique but all log file names are log.\d+ I want
to use a hash table and copy the log files to each
subdir based on the key/value relationship.

if (@NBlogs2) {
  for my $log(@NBlogs2) {
  if ($log =~ 'bpcd') {
     qx(cp $log $oldir/bpcd/);   
  }
  elsif ($log =~ 'bpdbm') {
     qx(cp $log $oldir/bpdbm);
  }
  elsif ($log =~ 'bptm') {
     qx(cp $log $oldir/bptm);
  }
 } 
}

thank you
derek

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to