Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re^5: Adding text file data to hashes and array

by haukex (Archbishop)
on Feb 15, 2019 at 08:35 UTC ( [id://1229938]=note: print w/replies, xml ) Need Help??


in reply to Re^4: Adding text file data to hashes and array
in thread Adding text file data to hashes and array

How to get rid of the single quotes for the values 30,40,50,60

Data::Dumper is a debugging tool, I would not use it to get consistently formatted output. Because Perl transparently converts between strings and numbers, 30 and "30" are practically the same thing, and so modules such as Data::Dumper have to more or less "guess" in which format to output such values. This kind of question actually comes up often when serializing Perl data structures, and usually the solution ends up being some custom code (one example: Cpanel::JSON::XS::Type).

So I guess the question is, why do you need the output in this format, and could you give a longer specification of the expected output format?

Replies are listed 'Best First'.
Re^6: Adding text file data to hashes and array
by Tigor (Novice) on Feb 15, 2019 at 09:47 UTC

    Hi haukex,actually i want the data in below format

     $var1 ={apple-A =>[30,40,50,60]}

    because i have to achieve the average of it as well, once the output is in that format.one of the reason is i was instructed to do achieve output in that way.

      $var1 ={apple-A =>[30,40,50,60]}

      Note that hash keys containing a dash must be quoted - so for a hash key of "apple-A", the output you've shown isn't valid Perl, and so as I said, Data::Dumper isn't the right tool for this job. If you want to get the output exactly as you showed here, then you'll have to build the strings yourself (keeping in mind that code you write yourself won't support any advanced escaping or quoting). You're already doing this in the code in your original post, only a few minor changes are needed - if you're having trouble figuring that out, then have a look at the documentation of sprintf to figure out the changes to your printf statement. If you need a different format than what you showed here, then please show exactly what you need.

      because i have to achieve the average of it as well

      Perl will transparently convert between strings and numbers, so to do the average as in your other thread Retrieve average, you actually don't need to worry about numbers being stored as strings.

        Thanks for the information

        I want to be myself clear while explaining the desired output that i am looking for .So i am writing it in step by step process

        Step 1:I have a text file which contains data as below

        Name Jan Feb Mar apr apple A 30 40 50 60 Orange O 40 20 30 60

        Step 2:Now,I want the output in below format

        {'apple-A'=>[30,40,50,60], 'Orange-O'=>[40,20,30,60]}

        Step 3:Once the output above is achieved average needs to be calculated for individual fruit by taking output of step 2 as input

        step 4:Now the output should look as below after calculating the average from step 2 output

        {'apple-A'=>[45], 'Orange-O'=>[37.5] }

        i would be more happy to provide information if anything required from my end

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1229938]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (4)
As of 2024-04-19 22:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found