- 论坛徽章:
- 95
|
本帖最后由 MMMIX 于 2015-08-21 10:50 编辑
回复 9# 不仅仅是符号
这是还不会用命令行参数?
可以参考下这个解法(输出不甚美观):
- #!/usr/bin/perl
- use strict;
- use warnings;
- use v5.14;
- use autodie;
- use Data::Dumper;
- if (@ARGV < 2) {
- printf "Usage: ./p.pl pattern_file file1 [file1 ...]\n";
- exit 1;
- }
- my $pat_file = shift;
- open my $in, '<', $pat_file;
- my %count_of;
- my $N = @ARGV;
- while (<$in>) {
- my $key = join "\t", split;
- $count_of{$key}->[$N] = 0;
- }
- for my $i (0 .. $#ARGV) {
- my $f = $ARGV[$i];
- open my $h, '<', $f;
- while (<$h>) {
- my $key = join "\t", split;
- $count_of{$key}->[$i] = 1 if $count_of{$key};
- }
- }
- for my $val (values %count_of) {
- my $t = 0;
- for (@{$val}) {
- $t++ if $_;
- }
- $val->[$N] = $t;
- }
- my $hf0 = (keys %count_of)[0];
- $hf0 =~ s/\w/ /g;
- say join "\t", ($hf0, @ARGV, 'total');
- for (sort { $count_of{$b}->[$N] <=> $count_of{$a}->[$N] } keys %count_of) {
- say join "\t", ($_, map { $_ ? $_ : 0 } @{$count_of{$_}});
- }
复制代码 |
|