> -----Original Message----- > From: Quincy Ntuli [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, September 04, 2001 1:20 PM > To: [EMAIL PROTECTED] > Subject: HELP !! displaying Associate Array value pairs > > > > greetings > > I am trying to return the value from an associate array; i do > not understand what i am doing wrong. I know i made be > reinventing the wheel here if you follow what i am trying to do.
A sentence or two on what you're trying to do is often helpful :~) > > thanks > > > #!/usr/bin/perl -w Suggest you "use strict;" and add "my" declarations to variables throughout. > > %theHash = (); > @dbRec = (); > @listing = (); > @sortedListing = () > ; > # making a directory list > > foreach $f (<data/*>) { if (-f $f) { $theFileItem = "$f\n"; > > # list populated into an array; > > push (@listing, $theFileItem);}} Why are you adding the newline? It seems to me that will make the open() below fail. > > #sorting the list i doubt this works though > > @sortedListing = sort @listing; Everything above can be shortened to: @sortedListing = sort grep -f, <data/*>; > > $listLength = @sortedListing; > > for ($i=0; $i<= $listLength-1; $i +=1) > { Ick. Don't use a C-style loop here. Just say: for my $fname (@sortedListing) { $fname will be set to each file name in turn > open(INVIN, "$sortedListing[$i]") or die Don't need the quotes. open(INVIN, $fname) or die "blah blah..."; > "COULD NOT OPEN $i\n"; > > <INVIN>; #ignoring the first line > > while(<INVIN>) > { $TheLine = $_; > chomp($TheLine); > push(@dbRec, $TheLine); > } This can be shortened to: chomp(@dbRec = <INVIN>); > } > > $theHash{'$sortedListing[1]'} =[$dbRec]; Should be @dbRec, not $dbRec (n.b.: "use strict" would have caught that) Also, remove the single-quotes. The variable won't be expanded inside single quotes: $theHash{$fname} = [ @dbRec ]; > > print "\$sortedListing[1] is > ($theHash{'$sortedListing[1]'})\n"; This will print something like: $sortedListing[1] is (ARRAY(0x80f80cc)) because $theHash{blah} is an array ref. If you want to print the contents of the array, you need to dereference it: print "\$sortedListing[1] is (@{$theHash{$sortedListing[1]}})\n"; Q: If you're just loading these files into a hash, why sort the filenames? It doesn't matter what order you load them in, right? Just curious. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]