Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

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

by Tigor (Novice)
on Feb 15, 2019 at 07:10 UTC ( [id://1229933]=note: print w/replies, xml ) Need Help??


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

Hi Poj your code has worked for me,thank you so much but actually in the output i am gettingvar$1={'apple-A'=>['30','40','50','60']}

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

input file data

name jan feb mar apr apple 30 40 50 60 orange 25 54 45 45

Please find the code below

#!/usr/bin/perl use strict; use warnings; use IO::All; use Data::Dumper; my @lines = io('test_Scores.txt')->chomp->slurp; splice @lines, 0, 1; # remove first line my %hash; foreach my $line (@lines) { $line =~ s/^\s+//; my @elements = split /\s+/, $line; my $key = join '-',splice @elements, 0, 2; $hash{$key} = \@elements if length($key) > 0; } print Dumper \%hash;

Replies are listed 'Best First'.
Re^5: Adding text file data to hashes and array
by poj (Abbot) on Feb 15, 2019 at 07:58 UTC
    i am gettingvar$1={'apple-A'=>['30','40','50','60']}

    That is the default Data::Dumper format. Use either

    $Data::Dumper::Useqq = 1; print Dumper \%hash;

    or dump the values as your original post.

    for my $key (sort keys %hash) { printf "%-12s %s\n",$key,join ' ',@{$hash{$key}}; }
    poj

      hi poj,the two lines of code are not working

        the two lines of code are not working

        Show the code you are running and the output or error message you get.

        poj
Re^5: Adding text file data to hashes and array
by haukex (Archbishop) on Feb 15, 2019 at 08:35 UTC
    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?

      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.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (8)
As of 2024-04-23 08:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found