分享

a question of perl

 lzjxh75 2011-01-05
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-------------------------------------------------------------
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__
 
搞错了一点,应该是先获取第一个表中所有的数据,然后用Perl做个排序,在存到新表中去~~~
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多