perl trick

一、die if以及文件的操作

#!/usr/bin/perl -w
use strict;

die "USAGE:\n\tperl $0 <><><>\n\n" 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"\t";
    $line[0] =~ s/\s//g;
    $line[2] =~ s/\s//g;
    my $k = $line[0]."\t".$line[2];
    $h{$k}=$k;
}

my $header =readline(QUERY);#读取一行
print OUT $header;#写入用print

my %header_idx;

chop($header);
my @headers = split("\t", $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\n";
 }

 三、时间打印

 

my $datestring = localtime();
print "starting time: $datestring \n";

#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 "\n";
#2018-10-19 15:36:21变成中文时间

 

 

 

 

 

 

  

 

转载于:https://www.cnblogs.com/always-fight/p/9772363.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值