in reply to Re: Hashes and String Variables
in thread Arrays and Strings in Hashes

Thanks for your help. I won't use newArray and lastArray...lol..curLinks and prevLinks.

Replies are listed 'Best First'.
Re^3: Hashes and String Variables
by mr_p (Scribe) on Jun 14, 2010 at 01:06 UTC

    I tried the following. Can you tell me what I am doing wrong here? Thank You.

    my @files = qw( http://use.perl.org/ http://search.cpan.org/ http://jobs.perl.org/ ); my @hash = ( url => '', curArray => [], prevArray => [], ); foreach my $url2 ( @files ) { #push (@hash{url}, $url2); $hash{url} = $url2; }
      Can you tell me what I am doing wrong here?
      • You should use strict and warnings because they will give you clues to your problems.
      • $hash{url} = $url2; will keep overwriting the last value of the literal key 'url' inside your for loop.
      • Read perldsc.
      use warnings; use strict; my @files = qw( http://use.perl.org/ http://search.cpan.org/ http://jobs.perl.org/ ); my %hash = ( curArray => [], prevArray => [], ); foreach my $url2 ( @files ) { push @{ $hash{url} }, $url2; } use Data::Dumper; print Dumper(\%hash); __END__ $VAR1 = { 'prevArray' => [], 'curArray' => [], 'url' => [ 'http://use.perl.org/', 'http://search.cpan.org/', 'http://jobs.perl.org/' ] };
        what does the curly braces around the hash do? ie. "@{ $hash{url} }"

        And how come url is not defined in the original hash structure?

        There should only be on url per hash entry entry in array.

        array { $url = "http://perl.org" curArray = [] prevArray = [] }