一、die if以及文件的操作
#!/usr/bin/perl -w use strict; die "USAGE: perl $0 <><><> " if @ARGV != 3; #$0表示脚本名,@ARGV表示参数个数 open (INPUT1 ,"$ARGV[0]") or die "can not open $ARGV[0]!"; open (QUERY ,"$ARGV[1]") or die "can not open $ARGV[1] !"; open (OUT ,">$ARGV[2]") or die "can not open $ARGV[2]!"; #注意下标是从0开始,>表示以写入方式打开 my %h; while(<INPUT1>) { chomp; my @line = split" "; $line[0] =~ s/s//g; $line[2] =~ s/s//g; my $k = $line[0]." ".$line[2]; $h{$k}=$k; } my $header =readline(QUERY);#读取一行 print OUT $header;#写入用print my %header_idx; chop($header); my @headers = split(" ", $header);#对变量进行split #scalar()获取数组长度 for(my $i=0; $i < scalar(@headers); $i++){ $headers[$i]=~s/s//g; $header_idx{$headers[$i]}=$i; }
二、遍历哈希
while ( my ($key,$value) = each %ENV ) { print "$key:$value "; }
三、时间打印
my $datestring = localtime(); print "starting time: $datestring "; #Fri Oct 19 15:36:21 2018这样的英文结果也许并不理想 sub sub_format_datetime { my($sec, $min, $hour, $day, $mon, $year, $wday, $yday, $isdst) = @_; $wday = $yday = $isdst = 0; sprintf("%4d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon+1, $day, $hour, $min, $sec); } #sprintf()函数 ''' $result = sprintf("%08d",$number);让$number有8个前导零。 $rounded = sprintf("%.3f",$number); 让小数点后有3位数字 ''' my $start = sub_format_datetime( localtime() ); print $start; print " "; #2018-10-19 15:36:21变成中文时间