求perl代码 计算出这两个方框内的最大值和最小值~~

各位大侠,本人新手,求代码~~ 能否分别找出文件中这两个方框内的最大值和最小值?有最简便的方法吗?二维数组不太会用,有好的方法吗,求教~~~!谢谢大家怎么读取这个数据文件是个问题。。。

第1个回答  2013-05-18
#!/usr/bin/perl -w
use strict;
die "perl $0 <Infile>\n" unless(@ARGV == 1);
open IN,$ARGV[0];
my $max5_6 = 0;
my $min5_6 = 1000000;
my $max7_8 = 0;
my $min7_8 = 10000000000;
while(<IN>){
chomp;

my @tmp=split /[ \t]+/,$_;

$max5_6 = $tmp[4] if($tmp[4] > $max5_6);

$max5_6 = $tmp[5] if($tmp[5] > $max5_6);

$min5_6 = $tmp[4] if($tmp[4] < $min5_6);

$min5_6 = $tmp[5] if($tmp[5] < $min5_6);

$max7_8 = $tmp[6] if($tmp[6] > $max7_8);

$max7_8 = $tmp[7] if($tmp[7] > $max7_8);

$min7_8 = $tmp[6] if($tmp[6] < $min7_8);

$min7_8 = $tmp[7] if($tmp[7] < $min7_8);
}

print "第五六列最大值为:$max5_6\n";
print "第五六列最小值为:$min5_6\n";
print "第七八列最大值为:$max7_8\n";
print "第七八列最小值为:$min7_8\n";

上面的脚本存为a.pl 输入文件假设为In.txt
运行的时候命令行输入 perl a.pl in.txt
即可
第2个回答  2013-05-18
my ( @d67, @d45 );
open F, "file.txt" or die "Can't open File";
while ( my $line = <F> ) {
my @data = split /\s{1,}/, $line;
push @d45, $data[4], $data[5];
push @d67, $data[6], $data[7];
}
close F;

@d45 = sort {$a<=>$b} @d45;
@d67 = sort {$a<=>$b} @d67;

print "Max in C4,5 is $d45[$#d45]; Min is $d45[0]$/";
print "Max in C6,7 is $d67[$#d67]; Min is $d67[0]$/";

__END__
注:

1. sort 之後, 最小值和最大值就已分布在 @d45, 和 d67 的一头一尾
2. $#d45 的值就是 @d45 最後一个元素的指标, $#d67 也是同一个道理本回答被提问者和网友采纳