1 the only 2 significant 3 part 4 is 5 a 6 number 7 before 8 the 9 first 10 space 11 character #### #!/usr/bin/perl use strict; use warnings; my %matrix; my %sum; #inport file names my $fn = $ARGV[0]; chomp $fn; open (my $FILE, $fn) or die "Can't open file \"$fn\"\n\n"; chomp(my @line = <$FILE>); my $n; for ($n=0; $n; my @all_kmer; my $kmer; foreach $kmer (@kmers){ my @split = split(/\s+/,$kmer); #obtain kmer reference number # for now we don't have to populate the big %matrix, commented # $matrix{$n}{split[0]} = 1; $sum{$split[0]}++; } close $KMER; } close $FILE; #creat outfile my $outfile = $ARGV[1]; open (my $OUT, '>' .$outfile) or die "\nUnable to create $outfile\n"; #sum up foreach my $k (keys %sum){ print $OUT "$sum{$k}\n"; } #### CREATE DATABASE kmers; CREATE TABLE matrix (file int, number int, key (file), key (number)); #### use DBI; my $dbh = DBI->new('DBI:mysql:database=kmers;host=127.0.0.1','mysql_user',''); my $query = "INSERT INTO matrix VALUES (?,?)"; my $sth = $dbh->prepare($query); for ($n=0; $n; my @all_kmer; my $kmer; foreach $kmer (@kmers){ my @split = split(/\s+/,$kmer); #obtain kmer reference number # for now we don't have to populate the big %matrix, commented # $matrix{$n}{split[0]} = 1; # $sum{$split[0]}++; $sth->execute($n,$split[0]); } close $KMER; } $sth->finish(); #### my $count_query = "SELECT number,COUNT(number) FROM matrix GROUP BY number ORDER BY number"; $sth = $dbh->prepare($count_query); #### #sum up #foreach my $k (keys %sum){ # print $OUT "$sum{$k}\n"; #} $sth->execute(); while (my $res = $sth->fetchrow_arrayref()) { print $OUT $res->[1]\n"; }