Exforsys
+ Reply to Thread
Results 1 to 2 of 2

Perl Interview question

This is a discussion on Perl Interview question within the Interview Questions forums, part of the Career Management category; Hi friends here is a Perl Problem that was posed to me. I was given one day time to solve. ...

  1. #1
    ilangocal is offline Junior Member Array
    Join Date
    Mar 2005
    Answers
    1

    Perl Interview question

    Hi friends
    here is a Perl Problem that was posed to me. I was given one day time to solve. Unfortunately I did not know enough Perl to do it. And sadly, I did not get selected.
    However I wish to share this question with all. Please pose your answers or programs on this forum for the benefit of all friends.

    ---------
    Given a table 'mailing':

    CREATE TABLE mailing (
    addr VARCHAR(255) NOT NULL
    );

    The mailing table will initially be empty. New addresses will be added
    on a daily basis. It is expected that the table will store at least
    10,000,000 email addresses and 100,000 domains.

    Write a perl script that updates another table which holds a daily
    count of email addresses by their domain name.

    Use this table to report the top 50 domains by count sorted by
    percentage growth of the last 30 days compared to the total.

    ** NOTE **
    - You MUST use the provided DB.pm for all database interaction, and you
    must use it as it is (DB.pm cannot be modified except for the
    connection settings).

    - The original mailing table should not be modified.

    - All processing must be done in Perl (eg. no complex queries or
    sub-queries)

    - Submit a compressed file(tar/zip) with the files required to run your
    script.
    --------------- DB.pm file contents are as follows

    package GUI:B;

    use strict;
    use DBI;

    use vars qw(@ISA @EXPORT);
    use Exporter;
    @ISA = qw(Exporter);
    @EXPORT = qw(dbConnect query);

    #
    # dbConnect - connect to the database, get the database handle
    #
    sub dbConnect {

    # Read database settings from config file:
    my $dsn = "DBI:mysql:database=test";
    my $dbh = DBI->connect( $dsn,
    '',
    '',
    { RaiseError => 1 }
    );

    return $dbh;

    }

    #
    # query - execute a query with parameters
    # query($dbh, $sql, @bindValues)
    #
    sub query {
    my $dbh = shift;
    my $sql = shift;
    my @bindValues = @_; # 0 or serveral parameters

    my @returnData = ();

    # issue query
    my $sth = $dbh->prepare($sql);

    if ( @bindValues ) {
    $sth->execute(@bindValues);
    } else {
    $sth->execute();
    }

    if ( $sql =~ m/^select/i ) {
    while ( my $row = $sth->fetchrow_hashref ) {
    push @returnData, $row;
    }
    }

    # finish the sql statement
    $sth->finish();

    return @returnData;
    }

    __END__


    Happy solving to all. Thanks. I am working on it too.


  2. #2
    DecisionSoft is offline Junior Member Array
    Join Date
    Mar 2005
    Answers
    1
    That's a very good one, thanks.


Latest Article

Network Security Risk Assessment and Measurement

Read More...