Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

insert into a hash

by grashoper (Monk)
on Mar 26, 2009 at 19:42 UTC ( [id://753493]=perlquestion: print w/replies, xml ) Need Help??

grashoper has asked for the wisdom of the Perl Monks concerning the following question:

I was looking to insert keys into a hash so that I can import some data from existing datafiles into a db, I was planning on using keys which would match the columnames in the database and the values would of course be what is entered into the columns, I am using odbc for my data connection and have existing data which consists of a date+timestamp followed by several times, for tests conducted on websites. so my keys should be {stamp}{login}{search} etc.. and my values would be like 01/01/2008 12:34 PM, 20.5, 19.6 etc. problem is it doesn't seem to like my attempt to load the keys , and then afterwards its going to kill my data when I go to assign the hash to the contents of the file, I guess I could get around this using join, and storing data from the file into an array, but I am still kinda stuck on how to pull this off.
%hash = split /\,/,<FILE>; @labels=qw(Date,Login,Searchload,Searchsave,Searchdetails,Searchdelete +); unshift(%hash)=(@labels);

Replies are listed 'Best First'.
Re: insert into a hash
by kyle (Abbot) on Mar 26, 2009 at 20:05 UTC

    From your description, I wrote this:

    my %hash; my @labels = qw(Date,Login,Searchload,Searchsave,Searchdetails,Searchd +elete); while ( my $line = <FILE> ) { chomp $line; my @fields = split /,/, $line; foreach my $label ( @labels ) { push @{ $hash{ $label } }, shift @fields; } }

    You might want to consider using Text::CSV_XS. And, as always, Use strict and warnings.

      From the statement
          my @labels = qw(Date,Login,Searchload,Searchsave,Searchdetails,Searchdelete);
      the array  @labels contains only a single element, the string 'Date,Login,Searchload,Searchsave,Searchdetails,Searchdelete'.
      >perl -wMstrict -le "my @ra = qw(a,b,c); print scalar @ra; print qq{'@ra'}; " Possible attempt to separate words with commas at -e line 1. Possible attempt to separate words with commas at -e line 1. 1 'a,b,c'
      The use of warnings and strictures is a very good idea.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (3)
As of 2024-04-25 18:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found