http://www.perlmonks.org?node_id=997979


in reply to hash array

I must admit that I don't understand the question completely, but is that what you want:

print map { $_ . "_name\n" } values %clock;

Best regards
McA

Replies are listed 'Best First'.
Re^2: hash array
by Anonymous Monk on Oct 09, 2012 at 11:20 UTC
    my question is : @clk_array = %clock_sheet print "@clk_array\-name\n"; i'm getting the output error as follows: 1)@clk_array having the same elements twice example: clk1 clk1 clk2 clk2 clk3 clk3 ........... it has to be clk1 clk2 clk3 ......... 2)the extension _name is coming for the last element only i want the extension for all the elements eg:clk1_name clk2_name clk3_name
      I think McA pretty much got it nailed. Let me tell you what is going on.
      1. @clk_array = %clock_sheet; will flatten the hash as a list in the form (key1, value1, key2, value2, ...). You either want just the keys, or just the values. For which, duh, keys and values could be very useful. Like:
        @clk_array = keys %clock_sheet;
        or
        @clk_array = values %clock_sheet;
      2. You magically expect "@clk_array\-name" to distribute the suffix "-name" across each element. But instead the string will take each value from the array, and join them with the current value of $" which is a space by default, and then append the suffix to the whole.

        To distribute the suffix over every element, you can use map:

        @clk_with_suffix = map "$_-name", @clk_array;
        A ++ for the explanation.
        thanks my issue got solved .... can u please explain about "map"

      Hmm, we can't see what's in your %clock_sheet. What is 'clk1'. Is it a key or a value or both in %clock_sheet?

      Please show us the content of the %clock_sheet. You can achieve that by:

      use Data::Dumper; print Dumper(\%clock_sheet), "\n";
        $VAR1 = { 'CLK_DBU' => 'CLK_DBU', 'CLK_IC_LMI0' => 'CLK_IC_LMI0', 'CLK_IC_ODP' => 'CLK_IC_ODP', 'CLK_T2' => 'CLK_T2', 'CLK_T3' => 'CLK_T3', 'CLK_DIRT' => 'CLK_DIRT', 'CLK_T1' => 'CLK_T1', 'CLK_CPU_SYS' => 'CLK_CPU_SYS' };