- 论坛徽章:
- 0
|
Bareword "USAGE" not allowed while "strict subs" in use at slaf.pl line 27.
运行下面的程序总是报错,哪位大神帮忙改改啊
#!/usr/bin/perl -w
use strict;
use Net::Config;
use warnings;
use Getopt::Long;
use Data: umper;
use FindBin qw($Bin $Script);
use File::Basename qw(basename dirname);
my $BEGIN_TIME=time();
my $Time_Start = &sub_format_datetime(localtime($BEGIN_TIME));
print " rogram Starts Time Time_Start\n";
my $version="1.0.0";
#######################################################################################
# ------------------------------------------------------------------
# GetOptions
# ------------------------------------------------------------------
my ($fIn1,$fIn2,$fIn3,$fOut);
GetOptions(
"help|?" =>\&USAGE,
"o:s"=>\$fOut,
"i1:s"=>\$fIn1,
"i2:s"=>\$fIn2,
"r:s"=>\$fIn3,
) or &USAGE;
USAGE unless ($fIn1 and $fIn2 and $fIn3 and $fOut);
open (fIN1,$fIn1)||die "$!";
open (fIN2,$fIn2)||die "$!";
open (OUT,">$fOut" ||die "$!";
my %part;
$/="@";
my $len=$fIn3;
while(my $line1=<fIN1>,my $line2=<fIN2> {
chomp($line1,$line2);
next if($line1=~/^$/||$line2=~/^$/);
my $initational=0;
my ($nam1,$seq1,$qc1)=(split/\n/,$line1)[0,1,3];
#print "$nam1";
my ($nam2,$seq2,$qc2)=(split/\n/,$line2)[0,1,3];
my ($ind1,$mN1)=split(/,/,$nam1);
#print "$nam1\n";
$seq1=substr($seq1,$initational,$len);
$qc1=substr($qc1,$initational,$len);
$seq2=substr($seq2,$initational,$len);
$qc2=substr($qc2,$initational,$len);
my ($ind2,$mN2)=split(/,/,$nam2);
$seq2=~tr/ATGC/TACG/;
my $str=reverse $seq2;
my $str1=reverse $qc2;
$part{$ind1}++;
print OUT">$ind1\n";
print OUT"$mN1\n";
print OUT"$seq1","XXXXXXXXXX","$str\n";
print OUT"$qc1","aaaaaaaaaa","$str1\n";
}
$/="\n";
foreach my $part (keys %part) {
print OUT"$part\t$part{$part}\n";
}
close fIN1;
close fIN2;
#print OUT "";
close OUT;
#######################################################################################
my $Time_End = sub_format_datetime(localtime(time()));
print STDOUT " rogram Ends Time Time_End\nDone. Total elapsed time : ",time()-$BEGIN_TIME,"s\n";
#######################################################################################
# ------------------------------------------------------------------
# sub function
# ------------------------------------------------------------------
#######################################################################################
sub ABSOLUTE_DIR{ #$pavfile=&ABSOLUTE_DIR($pavfile);
my $cur_dir=`pwd`;chomp($cur_dir);
my ($in)=@_;
my $return="";
if(-f $in){
my $dir=dirname($in);
my $file=basename($in);
chdir $dir;$dir=`pwd`;chomp $dir;
$return="$dir/$file";
}elsif(-d $in){
chdir $in;$return=`pwd`;chomp $return;
}else{
warn "Warning just for file and dir\n";
exit;
}
chdir $cur_dir;
return $return;
}
#######################################################################################
sub max{#&max(lists or arry);
#求列表中的最大值
my $max=shift;
my $temp;
while (@_) {
$temp=shift;
$max=$max>$temp?$max temp;
}
return $max;
}
#######################################################################################
sub min{#&min(lists or arry);
#求列表中的最小值
my $min=shift;
my $temp;
while (@_) {
$temp=shift;
$min=$min<$temp?$min temp;
}
return $min;
}
#######################################################################################
sub revcom(){#&revcom($ref_seq);
#获取字符串序列的反向互补序列,以字符串形式返回。ATTCCC->GGGAAT
my $seq=shift;
$seq=~tr/ATCGatcg/TAGCtagc/;
$seq=reverse $seq;
return uc $seq;
}
#######################################################################################
sub GetTime {
my ($sec, $min, $hour, $day, $mon, $year, $wday, $yday, $isdst)=localtime(time());
return sprintf("%4d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon+1, $day, $hour, $min, $sec);
}
#######################################################################################
sub sub_format_datetime {#Time calculation subroutine
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);
}
sub USAGE {#
my $usage=<<"USAGE";
ProgramName:
Version: $version
Contact: Program Date: 2010.6.9
Modify: 2010-7-27 ##move adapter recongnize programs to my bin dir
Description: this program is used to ......
Usage:
Options:
-i1 <file> input file,fasta format,fq,forced
-i2 <file> input file,fasta format,fq,forced
-o <file> output file,forced
-r <variable> input variable,int,forced
-h Help
USAGE
print $usage;
exit;
}
|
|