题目: 

  1. 12 34 56 78  
  2. 24 65 87 90  
  3. 76 11 67 87  
  4. 100 89 78 99 

求出文本中数字的最大、小值 

我看很多的朋友都用shell的awk实现了,但本人对awk不是很了解,试着用perl简单的写了一下,也能实现

code:

  1. #!/usr/bin/perl -w 
  2.  
  3. use strict; 
  4. use List::Util qw(max min); 
  5.  
  6. open my $file,'<','e.txt' or die "$!\n"; 
  7.  
  8. my @array = map {split /\s+/} <$file>
  9.  
  10. close $file; 
  11.  
  12. print min(@array),"\n"; 
  13. print max(@array),"\n";

第8行代码的也可以这样省略写

  1. my @array = map {split} <$file>

或者这样写

  1. my @array = map split,<$file>

抓图看一下:

perl脚本练习_休闲

output:

perl脚本练习_休闲_02

第二种方法:

  1. #!/usr/bin/perl -w 
  2.  
  3. use strict; 
  4.  
  5. my @array = (); 
  6.  
  7. open FILE,'<','e.txt' or die "$!\n"
  8.  
  9. while (<FILE>) { 
  10.        chomp; 
  11.        push @array,split; 
  12.  
  13. close FILE; 
  14.  
  15. @array = sort {$a<=>$b} @array
  16.  
  17. print "Min:\n"
  18. print "\t$array[0]\n"
  19. print "Max:\n"
  20. print "\t$array[$#array]\n"

图示

perl脚本练习_休闲_03