MySQL Forums
Forum List  »  Perl

need help
Posted by: Auchin Pakhi
Date: May 20, 2005 02:54AM

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 is here ***********/
package GUI::DB;

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__
/********************* DB.pm file ends *******/

Options: ReplyQuote


Subject
Written By
Posted
need help
May 20, 2005 02:54AM
May 20, 2005 05:02AM
May 20, 2005 08:41AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.