List Info

Thread: data structure / reference question




data structure / reference question
country flaguser name
United States
2007-06-16 12:35:44
Good day!

It's been a while since I had to do any semi-serious data
structures,
especially in perl, and I'm having trouble.  I never was a
data structure
wiz but perl seems to make it harder to understand.  Perhaps
I'm just
doing it using one of the TMTOWTDI ways that actually does
not do it!

Here's what's up:

I have a account id with multiple values like this:

  FILESYSTEM
     +-------   account00
                    +-------   filename01  --  filenumber01
                    +-------   filename02  --  filenumber02
                        .
                        .
                    +-------   filenameNN  --  filenumberNN
         .
         .
     +-------   accountNN

Since I want to compare these with a similar structure
from a database I'd actually have another one:

 DATABASE
     +-------   account00
                    +-------   filename01  -- 
recordnumber01
                    +-------   filename02  -- 
recordnumber02
                        .
                        .
                    +-------   filenameNN  -- 
recordnumberNN
         .
         .
     +-------   accountNN


I'll need to compare them by matching the account numbers,
then the
filenames.

   If they match it's okay.
   If there is a file and no database entry then I create
one and
      store the filename and filenumber.
   If there is a database entry and no corresponding
account/filename
      then I delete the file.


My idea is to loop over the file information and create
hashes
like this:
    $ACCOUNTS{$accountnum}{$filename}{"NAME"} =
$filename ;
    $ACCOUNTS{$accountnum}{$filename}{"NUMBER"} =
$filenumber ;

and this for the database values:
   
$DATABASE{$accountnumber}{$filename}{"RECORDNUMBER"
;} = $recordID ;

I'd want to compare the account numbers and filenames if
they exist.
How do I see the filename?  I can see the account number
like this:

foreach $key ( keys %ACCOUNTS ) {
  print "ACCOUNT is: $key  and file name is: " .
$ACCOUNT{$key} ."n" ;
}

The $key value contains the account number but
$ACCOUNT{$key} won't
dereference and get the file name.  Do I need another
foreach loop
inside the first one?  I tried this:

foreach $key ( keys %ACCOUNT ) {
  foreach $innerkey ( keys %{$ACCOUNT{$key}} ) {
    print "ACCOUNT is: $key and the filename is: "
. $innerkey   . "n" ;
  }
}

That code prints nothing although I know there is data in
there 

Insight would be greatly appreciated!

Thanks,
Eric
-- 
------------------------------------------------------------
------------
#  Eric A Lucas
#     "Oh, I have slipped the surly bond of earth
#      And danced the skies on laughter-silvered wings...
#                             -- John Gillespie Magee Jr.
-
**Majordomo list services provided by PANIX <URL:http://www.panix.com>**

**To Unsubscribe, send "unsubscribe phl" to
majordomolists.pm.org**

Re: data structure / reference question
country flaguser name
United States
2007-06-16 12:54:08
Ah, my example code actually does work.. I had a typo in
the
variable name that I assigned to.  Well,  looks like
"use strict ;"
is advised 

Eric wrote:
> Good day!
> 
> It's been a while since I had to do any semi-serious
data structures,
> especially in perl, and I'm having trouble.  I never
was a data structure
> wiz but perl seems to make it harder to understand. 
Perhaps I'm just
> doing it using one of the TMTOWTDI ways that actually
does not do it!
> 
> Here's what's up:
> 
> I have a account id with multiple values like this:
> 
>   FILESYSTEM
>      +-------   account00
>                     +-------   filename01  -- 
filenumber01
>                     +-------   filename02  -- 
filenumber02
>                         .
>                         .
>                     +-------   filenameNN  -- 
filenumberNN
>          .
>          .
>      +-------   accountNN
> 
> Since I want to compare these with a similar structure
> from a database I'd actually have another one:
> 
>  DATABASE
>      +-------   account00
>                     +-------   filename01  -- 
recordnumber01
>                     +-------   filename02  -- 
recordnumber02
>                         .
>                         .
>                     +-------   filenameNN  -- 
recordnumberNN
>          .
>          .
>      +-------   accountNN
> 
> 
> I'll need to compare them by matching the account
numbers, then the
> filenames.
> 
>    If they match it's okay.
>    If there is a file and no database entry then I
create one and
>       store the filename and filenumber.
>    If there is a database entry and no corresponding
account/filename
>       then I delete the file.
> 
> 
> My idea is to loop over the file information and create
hashes
> like this:
>     $ACCOUNTS{$accountnum}{$filename}{"NAME"}
= $filename ;
>    
$ACCOUNTS{$accountnum}{$filename}{"NUMBER"} =
$filenumber ;
> 
> and this for the database values:
>    
$DATABASE{$accountnumber}{$filename}{"RECORDNUMBER"
;} = $recordID ;
> 
> I'd want to compare the account numbers and filenames
if they exist.
> How do I see the filename?  I can see the account
number like this:
> 
> foreach $key ( keys %ACCOUNTS ) {
>   print "ACCOUNT is: $key  and file name is:
" . $ACCOUNT{$key} ."n" ;
> }
> 
> The $key value contains the account number but
$ACCOUNT{$key} won't
> dereference and get the file name.  Do I need another
foreach loop
> inside the first one?  I tried this:
> 
> foreach $key ( keys %ACCOUNT ) {
>   foreach $innerkey ( keys %{$ACCOUNT{$key}} ) {
>     print "ACCOUNT is: $key and the filename is:
" . $innerkey   . "n" ;
>   }
> }
> 
> That code prints nothing although I know there is data
in there 
> 
> Insight would be greatly appreciated!
> 
> Thanks,
> Eric


-- 
------------------------------------------------------------
------------
#  Eric A Lucas
#     "Oh, I have slipped the surly bond of earth
#      And danced the skies on laughter-silvered wings...
#                             -- John Gillespie Magee Jr.
-
**Majordomo list services provided by PANIX <URL:http://www.panix.com>**

**To Unsubscribe, send "unsubscribe phl" to
majordomolists.pm.org**

[1-2]

about | contact  Other archives ( Real Estate discussion Medical topics )