Find the answer to your Linux question:
Results 1 to 1 of 1
hello dear linux-experts just new to perl - i want to run this little 16 liner and do some things with it. i want to run the script to spit ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1
    Linux Newbie
    Join Date
    May 2013
    Posts
    219

    itterating through a list :: a 16 liner in perl - just for beginners


    hello dear linux-experts



    just new to perl - i want to run this little 16 liner and do some things with it.

    i want to run the script to spit out all the ppl that belong to the name

    that begin with an a.
    that begin with an b.
    that begin with an c.


    guess that this can be done with the method authors...()

    hmm -do i have to run it like so:

    Code:
      my $author = $p->author('A');
    is this the correct way - how to itterate through a list ( a 16 liner ) for beginners

    see here the full script


    Code:
      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('A');
      # $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;

    love to hear from you




    update;





    the first gives out nothing

    Code:
      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;

    the second gives out a bunch of a list:

    Code:
      
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    use YAML;
    use YAML::Dumper;
    use Parse::CPAN::Authors;
    
    my $list = '01mailrc.txt.gz'; 
    
    my $p = Parse::CPAN::Authors->new( $list );
    my @authors = $p->authors;
    
    my $dumper = YAML::Dumper->new;
    $dumper->indent_width(1);
    print $dumper->dump({dump => $p});


    aliasZERO Oleg Alistratnav zero@@cpan.org>"
    aliasZEROALTIC EEdwardL. AbrSasn eEdwar.abrSas@corp.tierrlycosl.com>"
    aliasZERODEUX "Vivncnt CAaron<vivncnt@zerodeuxe.net>"
    aliasZERODOGN "Esskld Hustvedto<zerodogg@@cpan.org>"
    aliasZEROHP Eric Clarko<zerohp@@cpan.org>"
    aliasZEROLIU HaizhougLiut <CENSORED>"
    aliasZETA Gregory S. Youinbloodo<zeta@@cpan.org>"
    aliasZEV Zev Benjamin <zev@@cpan.org>"
    aliasZEYA HmasjoSergPehofler hmasjoSer.pehofle@uibkl.acaet>"
    aliasZGH Zack Hobsson zgs@@cpan.org>"
    aliasZGPMAX WWillSa Blunon zgpmax@@cpan.org>"
    aliasZGRIM Virgdl OctDavva Cosmaa <CENSORED>"
    aliasZHANGBO zhaangboa <CENSORED>"
    aliasZHANGHJ zhaanhjsteer <CENSORED>"
    aliasZHANGL LeinZSaang<<CENSORED>"
    aliasZHANGXIN "ZSaangXinn zhaanxian@rifase.com>"
    aliasZHDA DeninsZhdvanav zhda@@cpan.org>"
    aliasZHIRSCHE Zacc Hirsich zhirsic@vmdwaeo.com>"

    well how to change the script that it gives out

    a. only the authors which name begin with a
    b. only the authors which name begin with b
    b. only the authors which name begin with c




    by the way - we can store the data - instead of printing


    @authors is an array of objects. we need to loop over that array and insert each author's info into the DB.

    we could use the Data:umper module to inspect/review the structure of the @authors array. For example, if we add a print Dumper \@authors; statement our output would look like this:



    acme@astray.com
    Leon Brocard
    LBROCARD
    $VAR1 = [
    bless( {
    'name' => 'Neil Hainer',
    'email' => 'CENSORED',
    'pauseid' => 'NHAINER'
    }, 'Parse::CPAN::Authors::Author' ),
    bless( {
    'pauseid' => 'CROSSWIRE',
    'email' => 'matt@crosswire.com',
    'name' => 'Matthew Sibley'
    }, 'Parse::CPAN::Authors::Author' ),
    bless( {
    'pauseid' => 'DAVIDJNSN',
    'name' => 'David Jensen',
    'email' => 'CENSORED'
    }, 'Parse::CPAN::Authors::Author' ),
    bless( {
    'pauseid' => 'KESZLER',
    'name' => 'Scott R. Keszler',
    'email' => 'keszler@srkconsulting.com'
    }, 'Parse::CPAN::Authors::Author' ),


    This is how you'd loop over the array.
    Code

    for my $author ( @authors ) {
    print $author->email, "\n";
    print $author->name, "\n";
    print $author->pauseid, "\n\n";
    }
    But instead of printing the data, we would insert it into the db.

    The DB table will need the 3 fields to hold the author's ID, name, and email address.


    the questions are:


    how to create the database?
    how to connect to the database from our script?
    how to write the insert statement?


    well and now i am just reading over the DBI manual
    Last edited by sayhello; 06-26-2014 at 11:16 PM.
    Akoya P 6512 15" OpenSuse 13.1: AMD Athlon X2 P320
    Samsunng q 210, 12,1" OpenSuse 13.1: Intel® Core™ 2 Duo Proz. P8400 2,26 GHz 1066 MHz FSB 3 MB

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •