- 论坛徽章:
- 6
|
本帖最后由 stanley_tam 于 2013-11-14 17:22 编辑
文件/share/work1/staff/wangyu/test/miRNA-works/BFC2013156/sec.xls貌似是一个excel。
这么写入估计有问题,下面的代码,假设你用的是ativeperl。报错的第29行是想写入$chek{$key}{:3_198:}- #!/usr/bin/perl -w
- use strict;
- use Excel::Writer::XLSX;
- BEGIN {
- if (system('perl -e "use Excel::Writer::XLSX"')){
- system('ppm install Excel::Writer::XLSX');
- }
- }
- open IN, "6h.sam" or die "Can not open IN\n";
- my $output_file = '/share/work1/staff/wangyu/test/miRNA-works/BFC2013156/sec.xls';
- my $output_workbook = Excel::Writer::XLSX->new( $output_file );
- my $row = 0;
- my $worksheet = $output_workbook->add_worksheet();
- my ( $num, $sum, $hi, $single, $double ) = ( 0, 0, 0, 0, 0 );
- my %hash;
- my %chek;
- while (<IN>) {
- chomp;
- next if /^@/;
- my @line = split /\t/, $_;
- if ( $line[2] !~ /\*/ ) {
- $hi++;
- if ( exists $hash{ $line[2] } ) {
- $hash{ $line[2] }++;
- $chek{ $line[0] . $line[2] }++;
- }
- else {
- $hash{ $line[2] } = 1;
- }
- }
- }
- close IN;
- foreach my $key ( sort { $hash{$a} <=> $hash{$b} } keys %hash ) {
- $worksheet->write_string($row, 0, $key);
- $worksheet->write_string($row, 1, $hash{$key});
- # suppose you want to write $chek{$key}.....
- $worksheet->write_string($row, 2, $chek{$key});
- $row++;
- }
- print $hi, "\n";
- __END__
复制代码 |
|