Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

store the output of the request to the db - instead of printing

by Anonymous Monk
on Jun 11, 2014 at 14:58 UTC ( [id://1089548]=perlquestion: print w/replies, xml ) Need Help??

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



g day dear perlmonks.

fairly new to Perl i want to make my very first steps: well i have a bit PHP-knowledge and i know a bit MySQL. Friends have told me - this is the right time to jump into the new language - into Perl. well i want to play around with perl.

i have :: DBI installed; also the mysql-db is up and running on my Linux-box.

i have a tiny little script that is called Parse::CPAN::Authors;

cf https://metacpan.org/source/LBROCARD/Parse-CPAN-Authors-2.27/README


use Parse::CPAN::Authors; # must have downloaded my $p = Parse::CPAN::Authors->new("01mailrc.txt.gz"); # either a filename as above or pass in the contents of the file my $p = Parse::CPAN::Authors->new($mailrc_contents); my $author = $p->author('LBROCARD'); # $a is a Parse::CPAN::Authors::Author object # ... objects are returned by Parse::CPAN::Authors print $author->email, "\n"; # leon@astray.com print $author->name, "\n"; # Leon Brocard print $author->pauseid, "\n"; # LBROCARD # all the author objects my @authors = $p->authors;



what is aimed: i want to store all the output in the mysql-db

regarding the db-things: well i am pretty new to perl-tasks.

but with the above mentioned module - i think i can learn alot - it is quite very simple. And with this i can play around - and try to find out how to store the data into a mysql db.
well could the results that i get be regarded as a perl object (reference to array of references)
i look for a good mechanism to serialize it and then store it on the DB?

hmm - if i want to store: should i make use of dumper!? look forward to hear from you

Replies are listed 'Best First'.
Re: store the output of the request to the db - instead of printing
by roboticus (Chancellor) on Jun 11, 2014 at 16:39 UTC

    You're off to a good start. Make sure you install the DBD::mysql package, then you should be able to start using it. The DBI module is very popular, so you can easily find plenty of examples to help you out. Going off the top of my head, you'll be doing something a bit like:

    use strict; use warnings; use DBI; my $DB = DBI::connect("connect string for your database", "user ID", " +password"); # Prepare a statement handle for your inserts my $STH = $DB->prepare("insert into mytable (col1, col2) values (?, ?) +"); while (<DATA>) { # Get your data my ($col1, $col2) = parse_line($_); # Now insert it into the database $STH->execute($col1, $col2); }

    This example uses a prepared statement with placeholders (the ? marks) because:

    • It improves security--you don't have to worry about SQL injection
    • Reduces chances for errors--any quoting rules are automatically handled for you
    • Can improve performace--if the database takes advantage of prepared statements handles

    Placeholders are just the ? marks, which have a one-to-one correspondence with the values you give the $STH->execute() function. Note that you can't use placeholders for table names or column names, just the values.

    ...roboticus

    When your only tool is a hammer, all problems look like your thumb.

    Update: spelling correction.

      hello - well this is a very good and helpful post. Thank you roboticus - i love it!!!


      I personally love the style of teaching some ground up things in Perl..

      thanks for the good and in-depth-going explanation.


      the answers are very convincing.the idea of you roboticus are great - the placeholders can be replaced with the output-values of the perl-module parse::cpan::authors the following: e-mail,
      name
      pauseid (whatever that is)

      print $author->email, "\n"; # leon@astray.com print $author->name, "\n"; # Leon Brocard print $author->pauseid, "\n"; # LBROCARD



      note - the columns of the database can be named as with the following: e-mail, name, pauseid (whatever that is)

        Those are all statements, not questions, yes?

        1. Are you the same Anon as the OP? 2. Are you the same anon who just replied to a node from 2005? 3. Have you been working on this for a while?

        If not, then please ignore this, but if you are, then: Please show some effort - show that you have read the documentation and tried writing your own code! Sorry, but making obvious statements and copy-pasting from documentation doesn't count. And, if you're willing to pay people for their time, you'll probably have more success doing that on one of the many "programmers for hire" sites (this isn't one of them) instead of re-posting the same questions in hopes of somebody eventually throwing you enough snippets or giving in and writing the code for you. Again, please show some effort.

Re: store the output of the request to the db - instead of printing
by InfiniteSilence (Curate) on Jun 11, 2014 at 16:30 UTC

    Friends have told me - this is the right time to jump into the new language - into Perl...

    These friends of yours are liars. Trying to learn a language by reading through existing coded modules must be like trying to learn physics by dropping a hammer on your foot repeatedly. It is idiocy. In order to understand a language you need, minimally, to grasp:

    • Syntax
    • Data Structures
    • Logical and Control Structures/Concepts/Constructs
    • Etc. Etc. Etc.

    Buy a book on Perl or read one of the free ones online (use Google). Read the pod documents associated with the language and when you want to know what a specific language feature does use this:perl -f sprintf for instance.

    Celebrate Intellectual Diversity

      Liars? I personally learned more and much faster from the Cookbook that I did from the Lama. Some of the syntax and structure stuff is just noise until you see it in practice. Dropping different hammers from different heights on your foot would be a pretty solid way to internalize F = ma. :P Hell, if you did two at a time you’d even independently discover the law of falling bodies.

        hello - well this is a superb statement - i love it!!!


        I personally learned more and much faster from the Cookbook that I did from the Lama. Some of the syntax and structure stuff is just noise until you see it in practice.

        that is a very goood idea. i love this idea! It is bout informal learning and i think that a cookbook is much much more effective than the lama
Re: store the output of the request to the db - instead of printing
by Anonymous Monk on Jun 11, 2014 at 15:16 UTC
Re: store the output of the request to the db - instead of printing
by perlfan (Vicar) on Jun 11, 2014 at 16:36 UTC

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (7)
As of 2024-04-20 13:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found