in reply to Not getting proper output in array write

I am not quite sure what you intend. If you want to associate a name with some numeric value, the Perl way is to use a hash. Below I used %namedValues. It appears that you also want to print the values in a particular order. The Perl way to have data in a particular order is to use an array. Below I used an array of names called @binNames.

I initialized the hash of names to values using what is called a "hash slice". This allowed me to do the initialization all in one step. Then once again used the order of the @binNames array to access and print the hash keys and their values in the proper order.

use strict; use warnings; my @binNames = qw(HRT RD WR LL DC); my @values = qw( 0 1 2 3 4); my %namedValues; @namedValues{@binNames}=@values; #a "hash slice" foreach my $name (@binNames) { print "bins $name = {$namedValues{$name}}\n"; #removed backslashes +as spotted by [hippo] } __END__ bins HRT = {0} bins RD = {1} bins WR = {2} bins LL = {3} bins DC = {4}

Replies are listed 'Best First'.
Re^2: Not getting proper output in array write
by hippo (Archbishop) on Sep 30, 2023 at 09:39 UTC
       print "bins $name = \{$namedValues{$name}\}\n";

    Why are the first two backslashes present? They seem to serve no purpose and just clutter the code.


    🦛

      Correct, removed. Don't know what I was thinking.