Eric on 16 Jun 2007 17:52:11 -0000


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: data structure / reference question


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 majordomo@lists.pm.org**