Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

reading data ...

by Anonymous Monk
on Dec 18, 2002 at 03:52 UTC ( #220757=perlquestion: print w/ replies, xml ) Need Help??
Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

I would like to read data into an array from a text file ( data.txt ). What does the @data actualy contain in the example below ( ref's to anonymous arrays ) ?

Once I read in the 3 lines, how do I push them onto @data correctly ?

data.txt contains 3 lines : "Jan","Feb","Mar","Apr","May","June","July","Aug","Sep","Oct","Nov","Dec"
3,5,7,2,4,9,6,3,6,1
8,4,1,8,9,3,5,1,3,8

use GD::Graph::lines; use GD::Graph::Map; print STDERR "Processing sample 5-1\n"; open IN, "<data.txt"; @mydata = <IN>; close IN; # # I would like to read the 3 lines in the data.txt file into data arra +y below. # The same data would be in the text file as in the data array below. # @data = ( ["Jan","Feb","Mar","Apr","May","June","July","Aug","Sep", +"Oct","Nov","Dec"], [ (3,5,7,2,4,9,6,3,6,1) ], [ (3,5,7,6,4,9,6,3,9,1) ] ); $my_graph = new GD::Graph::lines(); $my_graph->set( x_label => 'Month', y_label => 'Measure of success', title => 'A Simple Line Graph', y_max_value => 10, y_min_value => 0, y_tick_number => 10, y_label_skip => 1, box_axis => 0, line_width => 5, ); open PNG, ">sample51.png"; binmode PNG; #only for Windows like platforms print PNG $my_graph->plot(\@data)->png; close PNG; $map = new GD::Graph::Map($my_graph, info => '%l'); open HTML, ">sample51.html"; print HTML "<HTML><BODY BGCOLOR=white>\n". ($map->imagemap("sample51.png", $ref)). "</BODY></HTML>"; close HTML; __END__
Thx
Ginder Singh.

Comment on reading data ...
Download Code
Re: reading data ...
by BrowserUk (Pope) on Dec 18, 2002 at 04:17 UTC

    Try this

    #! perl -slw use strict; use Data::Dumper; my @data = ( [ split ',', <DATA>], [ split ',', <DATA> ], [ split ',', + <DATA> ] ); print Dumper \@data; __DATA__ "Jan","Feb","Mar","Apr","May","June","July","Aug","Sep","Oct","Nov"," +Dec" 3,5,7,2,4,9,6,3,6,1 8,4,1,8,9,3,5,1,3,8

    Examine what is said, not who speaks.

      Or even just
      my @data = map { chomp; [ split ',' ] } <DATA>;
      However, that makes the month names end up with the quote marks still on them. We can add a step to strip those off:
      my @data = map { chomp; [ map { /"(.*)"/ ? $1 : $_ } split ',' ] } + <DATA>;

      jdporter
      ...porque es dificil estar guapo y blanco.

        *scratches head* That's a little obfu. Could you break down what it does in steps? This looks interesting.

        For Ionizer, to "un"obfuscate this a little, here's a step by step approach that basically does the same thing in a different way:
        my @data = (); while (<DATA>) { # read one line chomp; # remove end-of-line character(s) s/\"//g; # remove double quotes if present push @data, [ $_ ]; # Create an anonymous array # *reference* with the current # line, and push that reference # onto the @data array. }
        I was trying to explain the obfuscated statement made by jdporter, but it was too involved.

        HTH.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://220757]
Approved by chromatic
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (4)
As of 2015-05-04 04:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    In my home, the TV remote control is ...









    Results (80 votes), past polls