| ||
1. 一个perl 小脚本格式
#!/usr/bin/perl
my $logFile = $ARGV[0]; #将ternimal 中第一个输入(不包括脚本名)赋值给变量$logFile
my $outFile = $ARGV[1]; #将ternimal 中第二个输入赋值给变量$outFile,输入参数存在数组@ARGV中
if (@ARGV < 2) { #提示terminal中输入参数的数量(不包括脚本名)是否正确, @ARGV < 2表示数组长度
#或者 if ($#ARGV < 2) $#表示数组长度
print "\nScript usage: $0 logFileName outFileName.\n\n"; exit;
} #提示脚本用法;$0表示在terminal中输入的第一个变量(即脚本名);
open(IF, $logFile ); #IF为文件句柄;可通过文件句柄的方式对logFile进行读取操作;
while(<IF>) { #<IF>表示逐行读取logFile,并将其赋值给一个系统默认变量$_, 对file进行遍历时$_ = <IF>可简写为<IF>
if ($_ =~ /^\s*layer\s+(\S+)\s+(\d+)/i ) { #对每一行进行正则匹配,匹配成功后进入if语句
$str = $1; $Num = $2; #$1和$2分别为括号中匹配到的第一个和第二个变量;
}
}
close IF; #每次文件读取完毕要close file
exit;
#perl中使用max和min函数
#!/usr/bin/perl
use List::Util "max";
use List::Util "min";
my $a=1;
my $b = 2;
$c = max($a,$b);
#perl函数返回多个值
my @arr = (1, 2, 3,4,0,-1);
@a4 = &findMaxMin(0,0,0,0,@arr);
sub findMaxMin($) {
my($xmin, $ymin,$xmax,$ymax, @arr) = @_;
for(my $k=0; $k < @arr; $k++) {
if($k%2 == 0){
$xmin = min($xmin, $arr[$k]);
$xmax = max($xmax, $arr[$k]);
} else {
$ymin = min($ymin, $arr[$k]);
$ymax = max($ymax, $arr[$k]);
}
}
return $xmin, $ymin, $xmax, $ymax;
}
#删除所有的txt文件
system("rm *.txt") ;
#如果te.txt exist, delete te.txt
system("rm te.txt") if -e "te.txt";
#删除文件最后两行
open(IF, "$test1\.txt");
open(OF, ">${test1}_tmp\.txt");
my @arrTmp = <IF>;
pop(@arrTmp);
pop(@arrTmp);
print(OF @arrTmp);
close OF;
close IF;